'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { Card, Input, Button } from '@zen/core/shared/components'; export default function LoginPage({ onSubmit, onNavigate, onSetSessionCookie, redirectAfterLogin = '/', currentUser = null }) { const [error, setError] = useState(''); const [success, setSuccess] = useState(''); const [isLoading, setIsLoading] = useState(false); const [formData, setFormData] = useState({ email: '', password: '' }); const [honeypot, setHoneypot] = useState(''); const [formLoadedAt, setFormLoadedAt] = useState(0); const router = useRouter(); useEffect(() => { setFormLoadedAt(Date.now()); }, []); useEffect(() => { if (currentUser) { router.replace(redirectAfterLogin); } }, [currentUser, redirectAfterLogin, router]); const handleKeyPress = (e) => { if (e.key === 'Enter' && !isLoading && !success) { handleSubmit(); } }; const handleSubmit = async () => { setError(''); setSuccess(''); setIsLoading(true); const submitData = new FormData(); submitData.append('email', formData.email); submitData.append('password', formData.password); submitData.append('_hp', honeypot); submitData.append('_t', String(formLoadedAt)); try { const result = await onSubmit(submitData); if (result.success) { const successMsg = result.message || 'Connexion réussie ! Redirection...'; setSuccess(successMsg); setIsLoading(false); setTimeout(async () => { if (result.sessionToken && onSetSessionCookie) { await onSetSessionCookie(result.sessionToken); } router.push(redirectAfterLogin); }, 1500); } else { setError(result.error || 'Échec de la connexion'); setIsLoading(false); } } catch (err) { console.error('Login error:', err); setError('Une erreur inattendue s\'est produite'); setIsLoading(false); } }; return (

Connexion

Veuillez vous connecter pour continuer.

{currentUser && (
Redirection...
)} {success && !currentUser && (
{success}
)} {error && !currentUser && !success && (
{error}
)}
setFormData(prev => ({ ...prev, email: value }))} onKeyDown={handleKeyPress} placeholder="your@email.com" disabled={!!success || !!currentUser} required />
Mot de passe { e.preventDefault(); if (!currentUser) onNavigate('forgot'); }} className="text-xs text-neutral-600 hover:text-neutral-900 transition-colors duration-200 dark:text-neutral-300 dark:hover:text-white" > Mot de passe oublié ?
setFormData(prev => ({ ...prev, password: value }))} onKeyDown={handleKeyPress} placeholder="••••••••" disabled={!!success || !!currentUser} />
); }