"use client"; import React, { useState, useEffect, Suspense } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import Link from 'next/link'; import { useUser } from '@/components/UserProvider'; const ResetPasswordForm = () => { const { settings } = useUser(); const siteName = settings?.siteName || "Afrohub"; const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [message, setMessage] = useState(''); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const router = useRouter(); const searchParams = useSearchParams(); const token = searchParams.get('token'); useEffect(() => { if (!token) { setError("Le lien de réinitialisation est invalide ou manquant."); } }, [token]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (password !== confirmPassword) { setError("Les mots de passe ne correspondent pas."); return; } if (password.length < 6) { setError("Le mot de passe doit faire au moins 6 caractères."); return; } setLoading(true); setError(''); setMessage(''); try { const res = await fetch('/api/auth/reset-password', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token, password }), }); const data = await res.json(); if (!res.ok) { throw new Error(data.error || 'Une erreur est survenue'); } setMessage(data.message); setTimeout(() => { router.push('/login'); }, 3000); } catch (err: any) { setError(err.message); } finally { setLoading(false); } }; return (
Choisissez votre nouveau mot de passe
Redirection vers la page de connexion...