administrador.base.orm._where.where_seguridad - gamboamartin/administrador GitHub Wiki
where_seguridad
La función where_seguridad
es una función privada que construye y aplica una cláusula SQL WHERE
o AND
basada en la seguridad del modelo. Si la seguridad está habilitada para el modelo, la función añade la condición de seguridad a la cláusula WHERE
existente o la inicia si aún no está presente.
Signatura
private function where_seguridad(modelo $modelo, string $seguridad, string $where): string|array
Parámetros
-
modelo $modelo
:
Una instancia de la clasemodelo
que representa el modelo de datos sobre el que se está trabajando. Este objeto contiene la propiedadaplica_seguridad
que indica si se deben aplicar medidas de seguridad en la consulta SQL. -
string $seguridad
:
Una cadena que representa la condición de seguridad que debe ser aplicada a la cláusulaWHERE
. Esta condición asegura que la consulta SQL solo muestre datos permitidos para el usuario actual. -
string $where
:
Una cadena que representa la cláusulaWHERE
existente. Si la condición de seguridad se debe aplicar, esta cadena se actualizará para incluir la seguridad; de lo contrario, permanecerá sin cambios.
Retorno
string|array
:
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
-
Verificación de la aplicación de seguridad:
- La función verifica si la propiedad
aplica_seguridad
del modelo estrue
. Si lo es, la función procede a aplicar la condición de seguridad.
- La función verifica si la propiedad
-
Validación de la condición de seguridad:
- La función limpia la cadena
seguridad
utilizandotrim()
para eliminar espacios en blanco al inicio y al final. - Si la cadena
seguridad
está vacía después de la limpieza, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función limpia la cadena
-
Construcción de la cláusula
WHERE
:- La función limpia la cadena
where
utilizandotrim()
. - Si
where
está vacía, se inicia la cláusula conWHERE
seguido de la condición de seguridad. - Si
where
ya contiene una condición, se añade la condición de seguridad utilizandoAND
.
- La función limpia la cadena
-
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;
$seguridad = '(usuario_id = $_SESSION[usuario_id])';
$where = 'activo = 1';
$resultado = $this->where_seguridad($modelo, $seguridad, $where);
// Resultado esperado:
// ' WHERE activo = 1 AND (usuario_id = $_SESSION[usuario_id])'
// Un array de error si ocurre algún problema.
Código de la Función
private function where_seguridad(modelo $modelo, string $seguridad, string $where): string|array
{
if($modelo->aplica_seguridad){
$seguridad = trim($seguridad);
if($seguridad === ''){
return $this->error->error(mensaje: 'Error seguridad esta vacia',data: $seguridad, es_final: true);
}
$where = trim($where);
if($where === ''){
$where .= " WHERE $seguridad ";
}
else{
$where .= " AND $seguridad ";
}
$where = " $where ";
}
return $where;
}