administrador.modelado.params_sql.seguridad - gamboamartin/administrador GitHub Wiki
seguridad
La función seguridad
es una función pública que gestiona la implementación de medidas de seguridad en una consulta SQL. Según el parámetro aplica_seguridad
, la función valida y genera una cláusula SQL que garantiza que solo los datos permitidos para el usuario actual sean accesibles.
Signatura
final public function seguridad(bool $aplica_seguridad, array $modelo_columnas_extra, string $sql_where_previo): array|string
Parámetros
-
bool $aplica_seguridad
:
Un valor booleano que indica si se deben aplicar medidas de seguridad en la consulta SQL. Si estrue
, se validará y generará una cláusula SQL de seguridad; si esfalse
, no se aplicará ninguna medida de seguridad. -
array $modelo_columnas_extra
:
Un array que contiene las columnas adicionales del modelo, especialmente aquellas relacionadas con la seguridad, como la columnausuario_permitido_id
. -
string $sql_where_previo
:
Una cadena que representa la cláusulaWHERE
previa que se debe combinar con la condición de seguridad generada, en caso de queaplica_seguridad
seatrue
.
Retorno
array|string
:
Retorna una cadena que representa la cláusula SQL de seguridad generada. Siaplica_seguridad
esfalse
, retorna una cadena vacía. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Inicialización de la variable de seguridad:
- La función inicializa la variable
$seguridad
como una cadena vacía, que se utilizará para almacenar la cláusula SQL de seguridad siaplica_seguridad
estrue
.
- La función inicializa la variable
-
Verificación de la aplicación de seguridad:
- Si
aplica_seguridad
estrue
, la función procede con los siguientes pasos para validar y generar la cláusula SQL de seguridad:- Validación de seguridad:
- La función llama a
valida_seguridad()
para verificar que las columnas adicionales del modelo relacionadas con la seguridad sean válidas. - Si ocurre un error durante la validación, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
- Generación de la cláusula SQL de seguridad:
- La función llama a
asigna_seguridad_data()
para generar la cláusula SQL de seguridad basada en el usuario actual. - Si ocurre un error durante la generación de la cláusula SQL, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
- Validación de seguridad:
- Si
-
Retorno de la cláusula de seguridad:
- La función retorna la cadena
$seguridad
, que contiene la cláusula SQL de seguridad generada o una cadena vacía si no se aplicó seguridad.
- La función retorna la cadena
Ejemplos
$aplica_seguridad = true;
$modelo_columnas_extra = [
'usuario_permitido_id' => '(SELECT usuario_permitido_id FROM usuarios WHERE id = usuarios.id)'
];
$sql_where_previo = 'activo = 1';
$resultado = $this->seguridad($aplica_seguridad, $modelo_columnas_extra, $sql_where_previo);
// Resultado esperado:
// Una cadena que representa la cláusula SQL de seguridad generada.
// Un array de error si ocurre algún problema.
Código de la Función
final public function seguridad(bool $aplica_seguridad, array $modelo_columnas_extra,
string $sql_where_previo): array|string
{
$seguridad = '';
if($aplica_seguridad){
$valida = $this->valida_seguridad(modelo_columnas_extra: $modelo_columnas_extra);
if(errores::$error){
return $this->error->error(mensaje: 'Error al validar $modelo->columnas_extra', data:$valida);
}
$seguridad = $this->asigna_seguridad_data(modelo_columnas_extra:$modelo_columnas_extra,
sql_where_previo: $sql_where_previo);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar sql de seguridad', data: $seguridad);
}
}
return $seguridad;
}