diff --git a/frontend/src/pages/auth/LoginPage.tsx b/frontend/src/pages/auth/LoginPage.tsx index e825d4a6..47c68265 100644 --- a/frontend/src/pages/auth/LoginPage.tsx +++ b/frontend/src/pages/auth/LoginPage.tsx @@ -2,6 +2,11 @@ import React, { useState } from 'react'; import { Eye, EyeOff, Loader2 } from 'lucide-react'; import toast from 'react-hot-toast'; +import { + useAuth, + LoginRequest +} from '../../api'; + interface LoginPageProps { onLogin: (user: any, token: string) => void; onNavigateToRegister: () => void; @@ -13,13 +18,16 @@ interface LoginForm { } const LoginPage: React.FC = ({ onLogin, onNavigateToRegister }) => { + + + const { login, isLoading, isAuthenticated } = useAuth(); + const [formData, setFormData] = useState({ email: '', password: '' }); const [showPassword, setShowPassword] = useState(false); - const [isLoading, setIsLoading] = useState(false); const [errors, setErrors] = useState>({}); const validateForm = (): boolean => { @@ -46,31 +54,28 @@ const LoginPage: React.FC = ({ onLogin, onNavigateToRegister }) if (!validateForm()) return; - setIsLoading(true); try { - const response = await fetch('/api/v1/auth/login', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(formData), - }); - const data = await response.json(); - - if (!response.ok) { - throw new Error(data.message || 'Error al iniciar sesión'); - } + const loginData: LoginRequest = { + email: formData.email, + password: formData.password, + }; + + await login(loginData); toast.success('¡Bienvenido a PanIA!'); - onLogin(data.user, data.access_token); + + const userData = localStorage.getItem('user_data'); + const token = localStorage.getItem('auth_token'); + + if (userData && token) { + onLogin(JSON.parse(userData), token); + } } catch (error: any) { console.error('Login error:', error); toast.error(error.message || 'Error al iniciar sesión'); - } finally { - setIsLoading(false); } };