'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { useSession } from 'next-auth/react'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; import Link from 'next/link'; import { TowerLogo } from '@/components/TowerLogo'; import { TowerBackground } from '@/components/TowerBackground'; export default function RegisterPage() { const [email, setEmail] = useState(''); const [name, setName] = useState(''); const [firstName, setFirstName] = useState(''); const [lastName, setLastName] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); const router = useRouter(); const { data: session, status } = useSession(); // Redirection si l'utilisateur est déjà connecté useEffect(() => { if (status === 'authenticated' && session) { router.push('/'); } }, [status, session, router]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(''); // Validation côté client if (password !== confirmPassword) { setError('Les mots de passe ne correspondent pas'); setIsLoading(false); return; } if (password.length < 6) { setError('Le mot de passe doit contenir au moins 6 caractères'); setIsLoading(false); return; } try { const response = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email, name, firstName, lastName, password, }), }); const data = await response.json(); if (!response.ok) { throw new Error(data.error || 'Une erreur est survenue'); } // Rediriger vers la page de login avec un message de succès router.push('/login?message=Compte créé avec succès'); } catch (error) { setError( error instanceof Error ? error.message : 'Une erreur est survenue' ); } finally { setIsLoading(false); } }; // Afficher un loader pendant la vérification de session if (status === 'loading') { return (
Chargement...
); } // Ne pas afficher le formulaire si l'utilisateur est connecté if (status === 'authenticated') { return null; } return (
{/* Contenu principal */}
{/* Logo et titre */} {/* Formulaire */}

Créer un compte

setEmail(e.target.value)} placeholder="votre@email.com" className="w-full" />
setFirstName(e.target.value)} placeholder="Prénom" className="w-full" />
setLastName(e.target.value)} placeholder="Nom" className="w-full" />
setName(e.target.value)} placeholder="Nom d'affichage personnalisé" className="w-full" />
setPassword(e.target.value)} placeholder="Minimum 6 caractères" className="w-full" />
setConfirmPassword(e.target.value)} placeholder="Répétez le mot de passe" className="w-full" />
{error && (
{error}
)}

Déjà un compte ?{' '} Se connecter

); }