'use client'; import { useState, useEffect, Suspense } from 'react'; import { useSearchParams, useRouter } from 'next/navigation'; import Link from 'next/link'; import Image from 'next/image'; import { resetPassword } from '@/lib/api/auth'; function ResetPasswordContent() { const searchParams = useSearchParams(); const router = useRouter(); const [token, setToken] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [success, setSuccess] = useState(false); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const [tokenError, setTokenError] = useState(false); useEffect(() => { const tokenFromUrl = searchParams.get('token'); if (tokenFromUrl) { setToken(tokenFromUrl); } else { setTokenError(true); } }, [searchParams]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); if (password !== confirmPassword) { setError('Les mots de passe ne correspondent pas'); return; } if (password.length < 12) { setError('Le mot de passe doit contenir au moins 12 caractères'); return; } setLoading(true); try { await resetPassword(token, password); setSuccess(true); setTimeout(() => router.push('/login'), 3000); } catch (err: any) { setError(err.message || 'Le lien de réinitialisation est invalide ou expiré.'); } finally { setLoading(false); } }; return (
Ce lien de réinitialisation est invalide. Veuillez faire une nouvelle demande.
Votre mot de passe a été modifié avec succès. Vous allez être redirigé vers la page de connexion...
Choisissez un nouveau mot de passe sécurisé pour votre compte.
{error}
Choisissez un mot de passe fort pour protéger votre compte et vos données.
{tip}