Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions Core/Base/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -359,33 +359,47 @@ public function url(): string

private function auth(): bool
{
// Obtener el nick del usuario de la cookie
$cookieNick = $this->request->cookies->get('fsNick', '');
if (empty($cookieNick)) {
// Si no hay nick en la cookie, no se puede autenticar
return false;
}

// Cargar el usuario desde la base de datos usando el nick
$user = new DinUser();
if (false === $user->loadFromCode($cookieNick) && $user->enabled) {
if (false === $user->loadFromCode($cookieNick)) {
// Si el usuario no se encuentra, registrar advertencia y fallar autenticación
Tools::log()->warning('login-user-not-found', ['%nick%' => $cookieNick]);
return false;
}

// Verificar si el usuario está activado
if (false === $user->enabled) {
// Si el usuario está desactivado, registrar advertencia, eliminar cookie y fallar autenticación
Tools::log()->warning('login-user-disabled', ['%nick%' => $cookieNick]);
setcookie('fsNick', '', time() - FS_COOKIES_EXPIRE, '/');
return false;
}

// Verificar la logkey del usuario desde la cookie
$logKey = $this->request->cookies->get('fsLogkey', '') ?? '';
if (false === $user->verifyLogkey($logKey)) {
// Si la logkey no es válida, registrar advertencia, eliminar cookie y fallar autenticación
Tools::log()->warning('login-cookie-fail');
// eliminamos la cookie
setcookie('fsNick', '', time() - FS_COOKIES_EXPIRE, '/');
return false;
}

// actualizamos la actividad del usuario
// Actualizar la última actividad del usuario si ha pasado el período definido
if (time() - strtotime($user->lastactivity) > User::UPDATE_ACTIVITY_PERIOD) {
$ip = Session::getClientIp();
$browser = $this->request->headers->get('User-Agent');
$user->updateActivity($ip, $browser);
$user->save();
}

// Establecer el usuario en la sesión actual
Session::set('user', $user);
return true;
}
Expand Down
Loading