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() {
|
public function __construct() {
|
||||||
$this->userModel = new User();
|
$this->userModel = new User();
|
||||||
Session::init();
|
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) {
|
public function login($login, $password) {
|
||||||
|
|||||||
Reference in New Issue
Block a user