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áusulaWHEREcon seguridad aplicada. -
modelo $modelo:
Una instancia de la clasemodeloque representa el modelo de datos sobre el que se está trabajando. Este objeto contiene propiedades comoaplica_seguridadycolumnas_extraque determinan cómo se deben aplicar las medidas de seguridad en la consulta SQL. -
string $where:
Una cadena que representa la cláusulaWHEREexistente, 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áusulaWHEREactualizada 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
WHEREcon seguridad:- La función llama a
genera_where_seguridad()para generar la cláusulaWHEREcon 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
WHEREen la consulta SQL:- La función concatena la cláusula
WHEREgenerada 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
WHEREy 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;
}