diff --git a/frontend/src/components/layout/Header.jsx b/frontend/src/components/layout/Header.jsx index 98a6b7f..7596a6a 100644 --- a/frontend/src/components/layout/Header.jsx +++ b/frontend/src/components/layout/Header.jsx @@ -32,7 +32,7 @@ export default function Header() {
-
+
Editor @@ -44,10 +44,10 @@ export default function Header() {
{isAuthenticated ? ( -
+
@@ -60,7 +60,7 @@ export default function Header() {

Usuario

{user?.username}

-
@@ -68,9 +68,13 @@ export default function Header() { )}
) : ( -
- Entrar - Registrarse +
+ + Acceder +
)}
diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx index c75e3fd..12b60c9 100644 --- a/frontend/src/pages/Login.jsx +++ b/frontend/src/pages/Login.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useRef } from 'react'; +import { useState, useEffect, useRef } from 'react'; import { Link, useNavigate, useSearchParams } from 'react-router-dom'; import { useAuth } from '../context/AuthContext'; import { authService } from '../services/authService'; @@ -44,7 +44,9 @@ export default function Login() { } catch (err) { console.error("Error al decodificar el token de Google:", err); - setError("Error al procesar el login con Google. El token está corrupto."); + setTimeout(() => { + setError("Error al procesar el login con Google. El token está corrupto."); + }, 0); } } }, [searchParams, login, navigate]); @@ -66,12 +68,12 @@ export default function Login() { }; return ( -
+
-

Deck of Cards

-

Accede a tu panel de control

+

Iniciar sesión

+

Únete para guardar tu progreso

{error && ( diff --git a/frontend/src/pages/Register.jsx b/frontend/src/pages/Register.jsx index 3055c9d..ad80d0c 100644 --- a/frontend/src/pages/Register.jsx +++ b/frontend/src/pages/Register.jsx @@ -7,6 +7,7 @@ export default function Register() { const [username, setUsername] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); + const [confirmPassword, setConfirmPassword] = useState(''); const [error, setError] = useState(''); const navigate = useNavigate(); const { login } = useAuth(); @@ -15,6 +16,11 @@ export default function Register() { e.preventDefault(); setError(''); + if (password !== confirmPassword) { + setError('Las contraseñas no coinciden. Por favor, revísalas.'); + return; + } + try { const data = await authService.register(username, email, password); @@ -32,69 +38,68 @@ export default function Register() { }; return ( -
-
+
+
+
-

Crear Cuenta

+

Crear Cuenta

Únete para guardar tu progreso

{error && ( -
+
{error}
)} -
-
- + +
+ setUsername(e.target.value)} - placeholder="Ej: alexis99" + type="text" required autoComplete="username" + className="w-full px-5 py-3 rounded-2xl border border-slate-200 focus:ring-2 focus:ring-blue-500 outline-none transition-all bg-slate-50 focus:bg-white" + value={username} onChange={(e) => setUsername(e.target.value)} + placeholder="Ej: usuario" />
-
- +
+ setEmail(e.target.value)} + type="email" required autoComplete="email" + className="w-full px-5 py-3 rounded-2xl border border-slate-200 focus:ring-2 focus:ring-blue-500 outline-none transition-all bg-slate-50 focus:bg-white" + value={email} onChange={(e) => setEmail(e.target.value)} placeholder="tu@email.com" />
-
- +
+ setPassword(e.target.value)} + type="password" required autoComplete="new-password" + className="w-full px-5 py-3 rounded-2xl border border-slate-200 focus:ring-2 focus:ring-blue-500 outline-none transition-all bg-slate-50 focus:bg-white" + value={password} onChange={(e) => setPassword(e.target.value)} placeholder="••••••••" />
- -

- ¿Ya tienes cuenta? Inicia sesión aquí +

+ ¿Ya tienes cuenta? Inicia sesión aquí