Ajustes de de seguridad Modulo Autogestión de Estudiantes

Estimados. Buenas tardes.

Estamos realizando algunos ajustes de seguridad (módulos de autogestión de estudiantes) y uno de ellos, es que la contraseña se debe cambiar cada ## (## a definir) días.

En modo de prueba hacemos la siguiente pregunta en el controller (REF-CODE) y de acuerdo a la respuesta se lo redirecciona a la página de configuración, donde el estudiantes debe cambiar su contraseña. Esto funciona y bien. Pero para que dicha validación se ejecute en todas las páginas, ¿Donde debería agregar esta línea (REF-CODE), para que lo heredan todos los controllers? ¿Me explico? Desde ya muchas gracias.

REF-CODE
if (kernel::persona()->get_debo_cambiar_clave())
$this->nuevo_request(‘configuracion’, ‘index’);

Hola Damian,

En 3W existe la clase src/siu/extension_kernel/helper_controlador_g3w2.php, la cual posee el método pre_accion, el mismo ejecuta lo que tiene dentro antes de que se ejecute la acción propiamente dicha, allí dentro podrías poner el control que queres hacer. A modo de referencia:

  1. Personalizas la clase src/siu/extension_kernel/helper_controlador_g3w2.php:

src/pers/nombre_pers/extension_kernel/helper_controlador_g3w2.php


<?php
namespace nombre_pers\extension_kernel;

use SIU\Chulupi\kernel;
use SIU\Chulupi\nucleo\NuevoRequest;

class helper_controlador_g3w2 extends \siu\extension_kernel\helper_controlador_g3w2 {

    public function pre_accion(){

        parent::pre_accion();
        
        // Acá iría el control
       if (kernel::persona()->get_debo_cambiar_clave()) {
            $nuevo_request = new NuevoRequest('configuracion', 'index', false);
            $nuevo_request->set_mensaje_post_nav("¡Debes cambiar tu contraseña!");
            throw $nuevo_request;
       }

    }

}

saludos.

Otra cosa, deberías excluir la operación de Configuración de la redirección, sino se te va a producir un ciclo de redirección infinito, seria mas o menos así:

src/pers/nombre_pers/extension_kernel/helper_controlador_g3w2.php


<?php
namespace nombre_pers\extension_kernel;

use SIU\Chulupi\kernel;
use SIU\Chulupi\nucleo\NuevoRequest;

class helper_controlador_g3w2 extends \siu\extension_kernel\helper_controlador_g3w2 {

    public function pre_accion() {

        parent::pre_accion();
        
        // Acá iría el control

       $operacion = kernel::ruteador()->get_id_operacion();

       if (kernel::persona()->get_debo_cambiar_clave() && (!in_array($operacion, array("configuracion", "logger", "acceso")))) {
            $nuevo_request = new NuevoRequest('configuracion', 'index', false);
            $nuevo_request->set_mensaje_post_nav("¡Debes cambiar tu contraseña!");
            throw $nuevo_request;
       }

    }

}

saludos.