import { useState } from 'react' import { Navigate, useNavigate } from 'react-router-dom' import { setInitialPasswordApi } from '../services/auth' import { useAuth } from '../context/AuthContext' import { homeFor } from '../config/roles' import PasswordRules from '../components/PasswordRules' import { isPasswordValid, PASSWORD_RULES_ERROR } from '../utils/passwordRules' // Première connexion d'un employé créé par un admin : le mot de passe reçu // par email est provisoire, il doit être remplacé avant tout accès. export default function NouveauMotDePasse() { const navigate = useNavigate() const { user, login, logout } = useAuth() const [form, setForm] = useState({ password: '', confirmPassword: '' }) const [showPassword, setShowPassword] = useState(false) const [error, setError] = useState('') const [loading, setLoading] = useState(false) if (!user) return if (!user.mustChangePassword) return 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 setInitialPasswordApi(form) const updatedUser = { ...user, mustChangePassword: false } login(updatedUser, localStorage.getItem('token')) navigate(homeFor(updatedUser), { replace: true }) } catch (err) { if (err.status === 401) { logout() navigate('/connexion', { replace: true }) return } setError(err.message) setLoading(false) } } const handleLogout = () => { logout() navigate('/connexion', { replace: true }) } return (

Nouveau mot de passe

Bienvenue {user.firstname} ! Vous vous êtes connecté avec un mot de passe provisoire. Choisissez votre propre mot de passe pour accéder à votre espace.

{error && (
{error}
)}

) }