Merge branch 'cookies'

This commit is contained in:
2026-09-29 13:35:39 +02:00
9 changed files with 376 additions and 3463 deletions
+71 -18
View File
@@ -47,25 +47,40 @@ switch ($_POST['orden']) {
case 'comprobarUsuario':
$email = trim($_POST['email'] ?? '');
$contrasena = $_POST['contrasena'] ?? '';
$recuerdame = isset($_POST['recuerdame']) && ($_POST['recuerdame'] === 'true' || $_POST['recuerdame'] === true);
$resultado = Usuario::login($email, $contrasena);
if ($resultado instanceof Usuario) {
// === GUARDAR EN SESIÓN (incluido avatar)===
// Guardamos la sesión
$_SESSION['idUsuario'] = $resultado->getIdUsuario();
$_SESSION['nombreUsuario'] = $resultado->getNombreUsuario();
$_SESSION['email'] = $resultado->getEmail();
$_SESSION['avatar'] = $resultado->getAvatar();
// =================================================
$_SESSION['avatar'] = $resultado->getAvatar();
// Si ha marcado "Recuérdame durante 10 días"
if ($recuerdame) {
$token = bin2hex(random_bytes(32)); // Token único de 64 caracteres
$duracion = time() + (10 * 24 * 60 * 60); // 10 días
setcookie('recuerdame_token', $token, $duracion, "/");
Usuario::guardarCookieToken($resultado->getIdUsuario(), $token);
} else {
// Si entra sin marcar recuérdame, limpiamos la cookie
if (isset($_COOKIE['recuerdame_token'])) {
setcookie('recuerdame_token', '', time() - 3600, "/");
}
Usuario::guardarCookieToken($resultado->getIdUsuario(), null);
}
echo json_encode([
'exito' => 'Login correcto',
'idUsuario' => $resultado->getIdUsuario(),
'nombreUsuario' => $resultado->getNombreUsuario()
'nombreUsuario' => $resultado->getNombreUsuario(),
'avatar' => $resultado->getAvatar()
]);
} else {
@@ -77,14 +92,23 @@ switch ($_POST['orden']) {
break;
case 'cerrarSesion':
// Si el usuario tenía token en la BD, lo eliminamos
if (isset($_SESSION['idUsuario'])) {
Usuario::guardarCookieToken($_SESSION['idUsuario'], null);
}
// Borramos la cookie del navegador
if (isset($_COOKIE['recuerdame_token'])) {
setcookie('recuerdame_token', '', time() - 3600, "/");
}
// Limpiamos las variables de sesión
unset($_SESSION['idUsuario']);
unset($_SESSION['email']);
unset($_SESSION['nombreUsuario']);
unset($_SESSION['avatar']);
unset($_SESSION['avatar']);
// Destruimos la sesión
session_destroy();
@@ -229,26 +253,55 @@ switch ($_POST['orden']) {
break;
case 'obtenerRanking':
$ranking = Usuario::obtenerRanking(5); //Cambiar para mostrar X jugadores en index
echo json_encode([
'exito' => true,
'ranking' => $ranking
]);
break;
case 'obtenerRanking':
$ranking = Usuario::obtenerRanking(5); //Cambiar para mostrar X jugadores en index
echo json_encode([
'exito' => true,
'ranking' => $ranking
]);
break;
case 'comprobarSesion':
//Si hay sesión:
if (isset($_SESSION['idUsuario']) && !empty($_SESSION['idUsuario'])) {
echo json_encode([
'activa' => true,
'usuario' => [
'idUsuario' => $_SESSION['idUsuario'],
'nombreUsuario' => $_SESSION['nombreUsuario'] ?? '',
'avatar' => $_SESSION['avatar'] ?? ''
'avatar' => $_SESSION['avatar'] ?? ''
]
]);
} else {
echo json_encode(['activa' => false]);
break;
}
// Si no hay sesión, comprobamos si hay cookie:
if (isset($_COOKIE['recuerdame_token'])) {
$usuarioCookie = Usuario::buscarPorCookie($_COOKIE['recuerdame_token']);
if ($usuarioCookie instanceof Usuario) {
$_SESSION['idUsuario'] = $usuarioCookie->getIdUsuario();
$_SESSION['email'] = $usuarioCookie->getEmail();
$_SESSION['nombreUsuario'] = $usuarioCookie->getNombreUsuario();
$_SESSION['avatar'] = $usuarioCookie->getAvatar();
echo json_encode([
'activa' => true,
'usuario' => [
'idUsuario' => $usuarioCookie->getIdUsuario(),
'nombreUsuario' => $usuarioCookie->getNombreUsuario(),
'avatar' => $usuarioCookie->getAvatar()
]
]);
break;
}
}
//No hay sesión ni hay cookie:
echo json_encode(['activa' => false]);
break;
}
}