import React, { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { supabase, isSupabaseConfigured } from '../../lib/supabaseClient'; import { Button } from '../../components/Button'; import { useAuth } from '../../context/AuthContext'; import { LogIn, AlertCircle, ArrowLeft, RefreshCw, Mail } from 'lucide-react'; export const Login: React.FC = () => { const navigate = useNavigate(); const { refreshDemoUser } = useAuth(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [needsConfirmation, setNeedsConfirmation] = useState(false); const [resendLoading, setResendLoading] = useState(false); const [resendSuccess, setResendSuccess] = useState(false); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(null); setNeedsConfirmation(false); try { if (!isSupabaseConfigured) { await new Promise(resolve => setTimeout(resolve, 1000)); const demoUser = { user: { id: 'demo-user-123', email: email, user_metadata: { date_of_birth: '1990-01-01' } }, access_token: 'demo-token', }; localStorage.setItem('demo_user_session', JSON.stringify(demoUser)); refreshDemoUser(); navigate('/dashboard'); return; } const { error } = await supabase.auth.signInWithPassword({ email, password, }); if (error) { console.error('Login error:', error); // Specifikus hibaüzenetek kezelése if (error.message.includes('Invalid login credentials')) { setError('Helytelen e-mail cím vagy jelszó. Ha most regisztráltál, ellenőrizd a postafiókodat és kattints a megerősítő linkre!'); setNeedsConfirmation(true); } else if (error.message.includes('Email not confirmed')) { setError('Az e-mail címed még nincs megerősítve. Kérjük, kattints a regisztrációkor kapott linkre!'); setNeedsConfirmation(true); } else { setError('Hiba történt: ' + error.message); } } else { navigate('/dashboard'); } } catch (err: any) { setError('Váratlan hiba történt a bejelentkezés során.'); } finally { setLoading(false); } }; const handleResendConfirmation = async () => { if (!email) { setError('Kérjük, először adja meg az e-mail címét!'); return; } setResendLoading(true); setResendSuccess(false); setError(null); try { const redirectUrl = `${window.location.origin}/#/auth/login`; const { error } = await supabase.auth.resend({ type: 'signup', email: email, options: { emailRedirectTo: redirectUrl } }); if (error) { setError('Hiba az újraküldéskor: ' + error.message); } else { setResendSuccess(true); setNeedsConfirmation(false); } } catch (err: any) { setError('Hiba történt az e-mail újraküldésekor.'); } finally { setResendLoading(false); } }; return (

Bejelentkezés

Lépjen be fiókjába a kezeléshez.

{error && (

{error}

{needsConfirmation && (
)}
)} {resendSuccess && (

A megerősítő linket újra elküldtük!

)}
setEmail(e.target.value)} className="appearance-none block w-full px-4 py-3 border border-gray-200 rounded-xl shadow-sm focus:outline-none focus:ring-4 focus:ring-primary/10 focus:border-primary sm:text-sm bg-white text-gray-900 font-medium" placeholder="pelda@email.hu" />
{/* Fixed: removed invalid 'size' prop from Link component */} Elfelejtette?
setPassword(e.target.value)} className="appearance-none block w-full px-4 py-3 border border-gray-200 rounded-xl shadow-sm focus:outline-none focus:ring-4 focus:ring-primary/10 focus:border-primary sm:text-sm bg-white text-gray-900 font-medium" placeholder="••••••••" />

Nincs még fiókod?

Regisztrálj ingyenesen
Vissza a főoldalra
); }