Files
triviagmatico/controladores/ControladorUsuario.php
T
2026-09-28 12:37:07 +02:00

253 lines
5.9 KiB
PHP

<?php
session_start();
require_once '../clases/ClaseUsuario.php';
switch ($_POST['orden']) {
case 'registrarUsuario':
$nombreUsuario = trim($_POST['nombreUsuario'] ?? '');
$email = trim($_POST['email'] ?? '');
$contrasena = $_POST['contrasena'] ?? '';
if ($nombreUsuario == '' || $email == '' || $contrasena == '') {
echo json_encode([
'error' => '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) {
// === AÑADIR ESTAS LÍNEAS PARA GUARDAR EN SESIÓN ===
$_SESSION['idUsuario'] = $resultado->getIdUsuario();
$_SESSION['nombreUsuario'] = $resultado->getNombreUsuario();
$_SESSION['email'] = $resultado->getEmail();
// =================================================
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']);
// 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'] ?? ''
]
]);
} else {
echo json_encode(['activa' => false]);
}
break;
}