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 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 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áusulaWHERE
actualizada 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_sql
para generar la condición de seguridad basada en las configuraciones del modelo (comoaplica_seguridad
ycolumnas_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áusulaWHERE
existente ($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
WHERE
actualizada:- La función retorna la cadena
WHERE
actualizada, 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;
}