import { useRef, useState } from 'react' import { Link, useLocation } from 'react-router-dom' import { forgotPasswordApi } from '../services/auth' import usePageMeta from '../hooks/usePageMeta' import Captcha from '../components/Captcha' import { CAPTCHA_ENABLED } from '../config/captcha' // Demande d'un lien de réinitialisation. La réponse est volontairement la même // que le compte existe ou non, pour ne pas révéler quels emails sont inscrits. export default function MotDePasseOublie() { usePageMeta({ title: 'Mot de passe oublié | Thé Tip Top', description: 'Recevez par email un lien pour choisir un nouveau mot de passe pour votre compte Thé Tip Top.', }) // L'email déjà saisi sur la page de connexion est repris. const { state } = useLocation() const [email, setEmail] = useState(state?.email ?? '') const [sent, setSent] = useState('') const [error, setError] = useState('') const [loading, setLoading] = useState(false) const [captchaToken, setCaptchaToken] = useState('') const captchaRef = useRef() const handleSubmit = async (e) => { e.preventDefault() setError('') setLoading(true) try { const data = await forgotPasswordApi({ email, captchaToken }) setSent(data.message) } catch (err) { setError(err.message) // Le jeton a été consommé par le backend : on en redemande un. captchaRef.current?.reset() setCaptchaToken('') } finally { setLoading(false) } } if (sent) { return (
Le lien est valable 30 minutes. Pensez à regarder dans vos courriers indésirables.
Retour à la connexionSaisissez l'adresse email de votre compte : nous vous enverrons un lien pour choisir un nouveau mot de passe.
Retour à la connexion