import { requestPasswordReset, resetPassword } from '../api.js'; export async function renderForgotPassword(root, onFinished) { root.innerHTML = `
e-Intervention
Mot de passe oublié

Réinitialiser l'accès client

Demandez un code de réinitialisation à partir de votre contact client ou de votre email, puis définissez un nouveau mot de passe.

Vous vous souvenez de votre mot de passe ? Retour à la connexion
`; const requestForm = root.querySelector('#requestForm'); const resetForm = root.querySelector('#resetForm'); const errorBox = root.querySelector('#errorBox'); const successBox = root.querySelector('#successBox'); requestForm.addEventListener('submit', async (event) => { event.preventDefault(); errorBox.hidden = true; successBox.hidden = true; const login = String(new FormData(requestForm).get('login') || '').trim(); try { const response = await requestPasswordReset({ login }); successBox.hidden = false; successBox.textContent = response?.masked_email ? `Un code a été envoyé à ${response.masked_email}.` : 'Un code de réinitialisation a été envoyé à votre adresse email.'; resetForm.hidden = false; resetForm.elements.login.value = login; resetForm.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } catch (error) { errorBox.hidden = false; const apiError = error?.data?.error || ''; if (apiError === 'missing_reset_email') { errorBox.textContent = 'Aucune adresse email n’est associée à ce compte. Contactez le support pour réinitialiser votre accès.'; } else if (apiError === 'account_not_found') { errorBox.textContent = 'Aucun compte client actif ne correspond à cet identifiant.'; } else { errorBox.textContent = 'Impossible d’envoyer le code de réinitialisation pour le moment.'; } } }); resetForm.addEventListener('submit', async (event) => { event.preventDefault(); errorBox.hidden = true; successBox.hidden = true; const payload = Object.fromEntries(new FormData(resetForm).entries()); try { await resetPassword(payload); successBox.hidden = false; successBox.textContent = 'Votre mot de passe a été réinitialisé. Vous pouvez maintenant vous connecter.'; window.setTimeout(() => onFinished(), 900); } catch (error) { errorBox.hidden = false; const apiError = error?.data?.error || ''; if (apiError === 'invalid_reset_code') { errorBox.textContent = 'Le code saisi est invalide.'; } else if (apiError === 'reset_code_expired') { errorBox.textContent = 'Le code de réinitialisation a expiré. Demandez-en un nouveau.'; } else if (apiError === 'weak_password') { errorBox.textContent = 'Le nouveau mot de passe doit contenir au moins 6 caractères.'; } else { errorBox.textContent = 'Impossible de réinitialiser le mot de passe pour le moment.'; } } }); }