administrador.base.orm._where.integra_where_seguridad - gamboamartin/administrador GitHub Wiki
integra_where_seguridad
La función integra_where_seguridad
es una función privada que integra una cláusula WHERE
con medidas de seguridad en una consulta SQL existente. La función se encarga de generar la condición de seguridad necesaria y de concatenarla a la consulta SQL proporcionada.
Signatura
private function integra_where_seguridad(string $consulta, modelo $modelo, string $where): string|array
Parámetros
-
string $consulta
:
Una cadena que representa la consulta SQL actual a la que se le añadirá la cláusulaWHERE
con seguridad aplicada. -
modelo $modelo
:
Una instancia de la clasemodelo
que representa el modelo de datos sobre el que se está trabajando. Este objeto contiene propiedades comoaplica_seguridad
ycolumnas_extra
que determinan cómo se deben aplicar las medidas de seguridad en la consulta SQL. -
string $where
:
Una cadena que representa la cláusulaWHERE
existente, que será modificada para incluir la condición de seguridad generada.
Retorno
string|array
:
Retorna una cadena que representa la consulta SQL completa con la cláusulaWHERE
actualizada para incluir la condición de seguridad. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Generación de la cláusula
WHERE
con seguridad:- La función llama a
genera_where_seguridad()
para generar la cláusulaWHERE
con la condición de seguridad basada en las configuraciones del modelo. - Si ocurre un error durante la generación de la cláusula
WHERE
, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Integración de la cláusula
WHERE
en la consulta SQL:- La función concatena la cláusula
WHERE
generada a la consulta SQL existente ($consulta
), asegurando que la consulta final incluya las medidas de seguridad adecuadas.
- La función concatena la cláusula
-
Retorno de la consulta SQL completa:
- La función retorna la consulta SQL completa, con la cláusula
WHERE
y las medidas de seguridad aplicadas.
- La función retorna la consulta SQL completa, con la cláusula
Ejemplos
$consulta = "SELECT * FROM usuarios";
$modelo = new modelo();
$modelo->aplica_seguridad = true;
$modelo->columnas_extra = [
'usuario_permitido_id' => '(SELECT usuario_permitido_id FROM usuarios WHERE id = usuarios.id)'
];
$where = 'activo = 1';
$resultado = $this->integra_where_seguridad($consulta, $modelo, $where);
// Resultado esperado:
// 'SELECT * FROM usuarios WHERE activo = 1 AND (usuario_permitido_id = $_SESSION[usuario_id])'
// Un array de error si ocurre algún problema.
Código de la Función
private function integra_where_seguridad(string $consulta, modelo $modelo, string $where): string|array
{
$where = $this->genera_where_seguridad(modelo: $modelo, where: $where);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar where', data: $where);
}
$consulta .= $where;
return $consulta;
}