fix: corriger le flux de réinitialisation par e-mail
Some checks failed
Validation applicative / TypeScript, tests et build (push) Failing after 2m22s

This commit is contained in:
manus-admin
2026-09-02 11:30:37 +02:00
parent 166729bdbc
commit 2cac56b8c6
8 changed files with 247 additions and 58 deletions

View File

@@ -8,6 +8,8 @@ import { sendEmail as sendEmailViaService, isEmailServiceConfigured } from "./_c
import { generateEmailFromTemplate } from "./emailTemplateGenerator";
import { EmailVariables } from "./emailTemplateUtils";
type GroupEmailType = "teaser" | "rappel1" | "rappel2" | "rappel3" | "rappel4" | "rappel5" | "rappel6";
interface EmailParams {
to: string;
subject: string;
@@ -612,10 +614,10 @@ export async function sendRappelJ1Email(params: {
* Envoie des emails groupés à tous les inscrits d'une séquence
*/
export async function sendGroupEmail(params: {
recipients: Array<{ email: string; prenom: string; nom: string; fonction: string }>;
recipients: Array<{ email: string; prenom: string; nom: string; fonction: string | null }>;
formationNom: string;
sequenceNom: string;
type: 'teaser' | 'rappel' | 'rappel_j1';
type: GroupEmailType;
dates: Array<{ dateDebut: Date; dateFin: Date; ordre: number }>;
lieu?: string;
formateur?: string;
@@ -630,37 +632,26 @@ export async function sendGroupEmail(params: {
apprenantEmail: recipient.email,
apprenantPrenom: recipient.prenom,
apprenantNom: recipient.nom,
apprenantFonction: recipient.fonction,
apprenantFonction: recipient.fonction || '',
formationNom: params.formationNom,
sequenceNom: params.sequenceNom,
dates: params.dates,
lieu: params.lieu,
formateur: params.formateur,
});
} else if (params.type === 'rappel') {
await sendRappelJ7Email({
} else {
// Un seul chemin pour les six rappels : le contenu est celui du template choisi.
await sendRappelEmail({
apprenantEmail: recipient.email,
apprenantPrenom: recipient.prenom,
apprenantNom: recipient.nom,
apprenantFonction: recipient.fonction,
apprenantFonction: recipient.fonction || '',
formationNom: params.formationNom,
sequenceNom: params.sequenceNom,
dates: params.dates,
lieu: params.lieu || '',
formateur: params.formateur,
});
} else {
// rappel_j1
await sendRappelJ1Email({
apprenantEmail: recipient.email,
apprenantPrenom: recipient.prenom,
apprenantNom: recipient.nom,
apprenantFonction: recipient.fonction,
formationNom: params.formationNom,
sequenceNom: params.sequenceNom,
dates: params.dates,
lieu: params.lieu,
formateur: params.formateur,
templateType: params.type,
});
}
sent++;
@@ -714,7 +705,13 @@ export async function sendPasswordResetEmail(params: {
return sendEmail({
to: params.apprenantEmail,
subject: 'Réinitialisation de votre mot de passe - Manager Itinova',
html: await getEmailTemplate(content, 'reset_password'),
// Le modèle reset_password doit recevoir le lien : son bodyContent est personnalisable
// et ne doit jamais masquer l'action de réinitialisation.
html: await getEmailTemplate(content, 'reset_password', {
nomApprenant: params.apprenantNom,
prenomApprenant: params.apprenantPrenom,
lienReinitialisation: params.resetLink,
}),
});
}