administrador.base.orm._where.genera_where_seguridad - gamboamartin/administrador GitHub Wiki
genera_where_seguridad
La función genera_where_seguridad es una función privada que genera una cláusula SQL WHERE con medidas de seguridad aplicadas. Esta función valida y genera la condición de seguridad utilizando métodos auxiliares, y luego integra esa condición en la cláusula WHERE existente del modelo.
Signatura
private function genera_where_seguridad(modelo $modelo, string $where): array|string
Parámetros
-
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 se debe combinar con la condición de seguridad generada. Esta cláusula puede ser una parte previa de la consulta SQL que se está construyendo.
Retorno
array|string:
Retorna una cadena que representa la cláusulaWHEREactualizada con la condición de seguridad aplicada. En caso de error, retorna un array de error generado por$this->error->error().
Explicación Detallada
-
Generación de la condición de seguridad:
- La función llama a
seguridad()desde una instancia deparams_sqlpara generar la condición de seguridad basada en las configuraciones del modelo (comoaplica_seguridadycolumnas_extra). - Si ocurre un error durante la generación de la condición de seguridad, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Aplicación de la condición de seguridad en
WHERE:- La función llama a
where_seguridad()para integrar la condición de seguridad generada en la cláusulaWHEREexistente ($where). - Si ocurre un error durante este proceso, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Retorno de la cláusula
WHEREactualizada:- La función retorna la cadena
WHEREactualizada, que incluye la condición de seguridad aplicada, o la cadena original si no se aplicó seguridad.
- La función retorna la cadena
Ejemplos
$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->genera_where_seguridad($modelo, $where);
// Resultado esperado:
// Una cadena que representa la cláusula `WHERE` actualizada con la condición de seguridad aplicada.
Código de la Función
private function genera_where_seguridad(modelo $modelo, string $where): array|string
{
$seguridad = (new params_sql())->seguridad(aplica_seguridad:$modelo->aplica_seguridad,
modelo_columnas_extra: $modelo->columnas_extra,
sql_where_previo: $where);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar sql de seguridad', data: $seguridad);
}
$where = $this->where_seguridad(modelo: $modelo, seguridad: $seguridad, where: $where);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar where', data: $where);
}
return $where;
}