import { useState } from 'react' import { Link, useNavigate, useParams } from 'react-router-dom' import { resetPasswordApi } from '../services/auth' import PasswordRules from '../components/PasswordRules' import { isPasswordValid, PASSWORD_RULES_ERROR } from '../utils/passwordRules' // Sert les deux parcours qui passent par un jeton envoyé par email : // la définition initiale du mot de passe après une inscription Google, // et la réinitialisation classique depuis « mot de passe oublié ». export default function DefinirMotDePasse() { const { token } = useParams() const navigate = useNavigate() const [form, setForm] = useState({ password: '', confirmPassword: '' }) const [showPassword, setShowPassword] = useState(false) const [error, setError] = useState('') const [success, setSuccess] = useState('') const [loading, setLoading] = useState(false) const handleChange = (e) => setForm({ ...form, [e.target.name]: e.target.value }) const handleSubmit = async (e) => { e.preventDefault() setError('') if (!isPasswordValid(form.password)) { setError(PASSWORD_RULES_ERROR) return } if (form.password !== form.confirmPassword) { setError('Les deux mots de passe ne correspondent pas.') return } setLoading(true) try { await resetPasswordApi({ token, ...form }) setSuccess('Mot de passe enregistré. Vous pouvez maintenant vous connecter avec votre email.') setTimeout(() => navigate('/connexion'), 2500) } catch (err) { setError(err.message) } finally { setLoading(false) } } if (success) { return (
{success}
Aller à la connexion
) } return (

Nouveau mot de passe

{/* Texte neutre : la page sert au mot de passe oublié comme au premier mot de passe d'un compte Google. */}

Choisissez le mot de passe que vous utiliserez pour vous connecter avec votre adresse email.

{error && (
{error} {/invalide ou expiré/i.test(error) && ( Demander un nouveau lien )}
)}

Retour à la connexion

) }