'Todos los campos son obligatorios' ]); break; } $usuarioExistente = Usuario::buscarPorEmail($email); if ($usuarioExistente instanceof Usuario) { echo json_encode([ 'error' => 'Ya existe una cuenta con ese correo electrónico' ]); break; } $usuario = new Usuario( $nombreUsuario, $contrasena, $email, 'img/avatars/defaultProfile.jpeg' ); $resultado = $usuario->registrar(); echo json_encode($resultado); break; case 'comprobarUsuario': $email = trim($_POST['email'] ?? ''); $contrasena = $_POST['contrasena'] ?? ''; $resultado = Usuario::login($email, $contrasena); if ($resultado instanceof Usuario) { // === GUARDAR EN SESIÓN (incluido avatar)=== $_SESSION['idUsuario'] = $resultado->getIdUsuario(); $_SESSION['nombreUsuario'] = $resultado->getNombreUsuario(); $_SESSION['email'] = $resultado->getEmail(); $_SESSION['avatar'] = $resultado->getAvatar(); // ================================================= echo json_encode([ 'exito' => 'Login correcto', 'idUsuario' => $resultado->getIdUsuario(), 'nombreUsuario' => $resultado->getNombreUsuario() ]); } else { echo json_encode([ 'error' => 'Usuario o contraseña incorrectos' ]); } break; case 'cerrarSesion': // Limpiamos las variables de sesión unset($_SESSION['idUsuario']); unset($_SESSION['email']); unset($_SESSION['nombreUsuario']); unset($_SESSION['avatar']); // Destruimos la sesión session_destroy(); echo json_encode([ 'exito' => 'Sesión cerrada' ]); break; case 'mostrarEstadisticas': $usuario = Usuario::buscarPorId($_SESSION['idUsuario']); if ($usuario instanceof Usuario) { echo json_encode([ 'victorias' => $usuario->getVictorias(), 'derrotas' => $usuario->getDerrotas(), 'aciertos' => $usuario->getAciertos() ]); } else { echo json_encode($usuario); } break; case 'cambiarNombre': if (!isset($_SESSION['idUsuario'])) { echo json_encode([ 'error' => 'No hay ningún usuario conectado.' ]); break; } $nuevoNombre = trim($_POST['nombreUsuario'] ?? ''); if ($nuevoNombre === '') { echo json_encode([ 'error' => 'El nombre no puede estar vacío.' ]); break; } $usuario = Usuario::buscarPorId($_SESSION['idUsuario']); if (!($usuario instanceof Usuario)) { echo json_encode([ 'error' => 'No se encontró el usuario.' ]); break; } $resultado = $usuario->cambiarNombre($nuevoNombre); if (isset($resultado['error'])) { echo json_encode($resultado); } else { // Actualizamos también la sesión $_SESSION['nombreUsuario'] = $nuevoNombre; echo json_encode([ 'exito' => 'Nombre actualizado correctamente.', 'nombreUsuario' => $nuevoNombre ]); } break; case 'cambiarAvatar': if (!isset($_SESSION['idUsuario'])) { echo json_encode([ 'error' => 'No hay ningún usuario conectado.' ]); break; } if (!isset($_FILES['avatar']) || $_FILES['avatar']['error'] !== UPLOAD_ERR_OK) { echo json_encode([ 'error' => 'No se ha recibido ninguna imagen.' ]); break; } $archivo = $_FILES['avatar']; $tipo = mime_content_type($archivo['tmp_name']); $tiposPermitidos = [ 'image/jpeg', 'image/png', 'image/gif', 'image/webp' ]; if (!in_array($tipo, $tiposPermitidos)) { echo json_encode([ 'error' => 'El formato de imagen no es válido.' ]); break; } $usuario = Usuario::buscarPorId($_SESSION['idUsuario']); if (!($usuario instanceof Usuario)) { echo json_encode([ 'error' => 'No se encontró el usuario.' ]); break; } $resultado = $usuario->cambiarAvatar($archivo); if (isset($resultado['error'])) { echo json_encode($resultado); } else { // Actualizamos también la sesión $_SESSION['avatar'] = $resultado['avatar']; echo json_encode($resultado); } break; case 'obtenerRanking': $ranking = Usuario::obtenerRanking(5); //Cambiar para mostrar X jugadores en index echo json_encode([ 'exito' => true, 'ranking' => $ranking ]); break; case 'comprobarSesion': if (isset($_SESSION['idUsuario']) && !empty($_SESSION['idUsuario'])) { echo json_encode([ 'activa' => true, 'usuario' => [ 'idUsuario' => $_SESSION['idUsuario'], 'nombreUsuario' => $_SESSION['nombreUsuario'] ?? '', 'avatar' => $_SESSION['avatar'] ?? '' ] ]); } else { echo json_encode(['activa' => false]); } break; }