diff --git a/clases/ClaseUsuario.php b/clases/ClaseUsuario.php index 3b31c6d..f7bd5d9 100644 --- a/clases/ClaseUsuario.php +++ b/clases/ClaseUsuario.php @@ -139,4 +139,56 @@ class Usuario { ]; } } -} \ No newline at end of file + + public static function buscarPorEmail($email) { + $conexion = conexionBD(); + + if (is_array($conexion)) { + return $conexion; + } + + try { + $sql = "SELECT * FROM usuario WHERE email = :email"; + $stmt = $conexion->prepare($sql); + $stmt->execute([':email' => $email]); + + $datos = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($datos) { + return new Usuario( + $datos['nombreUsuario'], + $datos['contrasena'], + $datos['email'], + $datos['avatar'], + $datos['cookie'], + (int)$datos['aciertos'], + (int)$datos['victorias'], + (int)$datos['derrotas'], + (int)$datos['idUsuario'] + ); + } + + return null; // No existe usuario con ese email + + } catch (PDOException $error) { + return [ + 'error' => 'Ocurrió un error al buscar el usuario por email.', + 'error_tecnico' => $error->getMessage() + ]; + } + } + + public static function login($email, $contrasena) { + $usuario = self::buscarPorEmail($email); + + if (!($usuario instanceof Usuario)) { + return null; + } + + if (password_verify($contrasena, $usuario->getContrasena())) { + return $usuario; + } + + return null; // Contraseña incorrecta + } +} diff --git a/controladores/controladorUsuario.php b/controladores/controladorUsuario.php index 4a17875..f0ade4f 100644 --- a/controladores/controladorUsuario.php +++ b/controladores/controladorUsuario.php @@ -2,7 +2,7 @@ session_start(); -require_once '../clases/Usuario.php'; +require_once '../clases/ClaseUsuario.php'; switch ($_POST['orden']) { @@ -83,4 +83,5 @@ switch ($_POST['orden']) { ]); break; -} \ No newline at end of file + +}