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áusula WHERE con seguridad aplicada.

  • modelo $modelo:
    Una instancia de la clase modelo que representa el modelo de datos sobre el que se está trabajando. Este objeto contiene propiedades como aplica_seguridad y columnas_extra que determinan cómo se deben aplicar las medidas de seguridad en la consulta SQL.

  • string $where:
    Una cadena que representa la cláusula WHERE existente, 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áusula WHERE actualizada para incluir la condición de seguridad. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Generación de la cláusula WHERE con seguridad:

    • La función llama a genera_where_seguridad() para generar la cláusula WHERE con 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.
  2. Integración de la cláusula WHERE en la consulta SQL:

    • La función concatena la cláusula WHERE generada a la consulta SQL existente ($consulta), asegurando que la consulta final incluya las medidas de seguridad adecuadas.
  3. Retorno de la consulta SQL completa:

    • La función retorna la consulta SQL completa, con la cláusula WHERE y las medidas de seguridad aplicadas.

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;

    }