Implementación de actualización instantánea de roles sin cierre de sesión
This commit is contained in:
25
src/Auth.php
25
src/Auth.php
@@ -10,6 +10,31 @@ class Auth {
|
||||
public function __construct() {
|
||||
$this->userModel = new User();
|
||||
Session::init();
|
||||
$this->refreshUserSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresca los datos del usuario en la sesión directamente desde la base de datos
|
||||
* para que los cambios de rol sean instantáneos.
|
||||
*/
|
||||
private function refreshUserSession() {
|
||||
if ($this->isLoggedIn()) {
|
||||
$userId = Session::get('user_id');
|
||||
$user = $this->userModel->getById($userId);
|
||||
|
||||
if (!$user || (isset($user['activo']) && !$user['activo'])) {
|
||||
$this->logout();
|
||||
return;
|
||||
}
|
||||
|
||||
// Actualizar solo si hay cambios para evitar escrituras innecesarias en la sesión
|
||||
if (Session::get('user_rol') !== $user['rol']) {
|
||||
Session::set('user_rol', $user['rol']);
|
||||
}
|
||||
if (Session::get('user_name') !== $user['nombre']) {
|
||||
Session::set('user_name', $user['nombre']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function login($login, $password) {
|
||||
|
||||
Reference in New Issue
Block a user