Checkpoint: Ajout du template "Réinitialisation de mot de passe" (reset_password) :
- Ajout de "reset_password" à l'enum du schéma Drizzle (table emailTemplates)
- Migration SQL pour modifier l'enum dans la base de données
- Création du template dans la base de données avec un contenu par défaut approprié
- Mise à jour de la procédure tRPC emailTemplates.upsert pour utiliser les noms de colonnes français (titre, couleurPrincipale, couleurSecondaire, piedDePage)
- Mise à jour de la fonction upsertEmailTemplate dans server/db.ts pour utiliser les noms de colonnes français
- Réécriture complète de AdminEmailTemplates.tsx pour utiliser les noms de colonnes français
- Test complet de l'interface : le template s'affiche correctement, peut être modifié et prévisualisé
- Le template contient les variables {{prenom}}, {{nom}}, {{lienReinitialisation}} pour la réinitialisation de mot de passe
- Total de 9 templates d'emails maintenant disponibles (inscription, teaser, rappel, rappelJ1, rappel3-6, reset_password)
This commit is contained in:
9
.manus/db/db-query-1768464612603.json
Normal file
9
.manus/db/db-query-1768464612603.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"query": "DELETE FROM emailTemplates WHERE type NOT IN ('inscription', 'teaser', 'rappel', 'rappelJ1', 'rappel3', 'rappel4', 'rappel5', 'rappel6');",
|
||||
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute DELETE FROM emailTemplates WHERE type NOT IN ('inscription', 'teaser', 'rappel', 'rappelJ1', 'rappel3', 'rappel4', 'rappel5', 'rappel6');",
|
||||
"rows": [],
|
||||
"messages": [],
|
||||
"stdout": "",
|
||||
"stderr": "",
|
||||
"execution_time_ms": 108
|
||||
}
|
||||
9
.manus/db/db-query-1768464704023.json
Normal file
9
.manus/db/db-query-1768464704023.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"query": "ALTER TABLE emailTemplates MODIFY COLUMN type ENUM('inscription', 'teaser', 'rappel', 'rappelJ1', 'rappel3', 'rappel4', 'rappel5', 'rappel6', 'reset_password') NOT NULL;",
|
||||
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE emailTemplates MODIFY COLUMN type ENUM('inscription', 'teaser', 'rappel', 'rappelJ1', 'rappel3', 'rappel4', 'rappel5', 'rappel6', 'reset_password') NOT NULL;",
|
||||
"rows": [],
|
||||
"messages": [],
|
||||
"stdout": "",
|
||||
"stderr": "",
|
||||
"execution_time_ms": 191
|
||||
}
|
||||
9
.manus/db/db-query-1768464712457.json
Normal file
9
.manus/db/db-query-1768464712457.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"query": "INSERT INTO emailTemplates (type, titre, bodyContent, couleurPrincipale, couleurSecondaire, piedDePage) VALUES\n('reset_password', 'Réinitialisation de votre mot de passe', '<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p><p>Vous avez demandé la réinitialisation de votre mot de passe.</p><p>Cliquez sur le lien ci-dessous pour définir un nouveau mot de passe :</p><p><a href=\"{{resetLink}}\" style=\"color: #283581; font-weight: bold;\">Réinitialiser mon mot de passe</a></p><p>Ce lien est valable pendant 24 heures.</p><p>Si vous n\\'avez pas demandé cette réinitialisation, ignorez cet email.</p>', '#283581', '#0578BE', '© 2024 Itinova - Tous droits réservés');",
|
||||
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute INSERT INTO emailTemplates (type, titre, bodyContent, couleurPrincipale, couleurSecondaire, piedDePage) VALUES\n('reset_password', 'Réinitialisation de votre mot de passe', '<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p><p>Vous avez demandé la réinitialisation de votre mot de passe.</p><p>Cliquez sur le lien ci-dessous pour définir un nouveau mot de passe :</p><p><a href=\"{{resetLink}}\" style=\"color: #283581; font-weight: bold;\">Réinitialiser mon mot de passe</a></p><p>Ce lien est valable pendant 24 heures.</p><p>Si vous n\\'avez pas demandé cette réinitialisation, ignorez cet email.</p>', '#283581', '#0578BE', '© 2024 Itinova - Tous droits réservés');",
|
||||
"rows": [],
|
||||
"messages": [],
|
||||
"stdout": "",
|
||||
"stderr": "",
|
||||
"execution_time_ms": 69
|
||||
}
|
||||
9
.manus/db/db-query-1768464822745.json
Normal file
9
.manus/db/db-query-1768464822745.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"query": "ALTER TABLE `emailTemplates` MODIFY COLUMN `type` enum('inscription','teaser','rappel','rappelJ1','rappel3','rappel4','rappel5','rappel6','reset_password') NOT NULL;",
|
||||
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE `emailTemplates` MODIFY COLUMN `type` enum('inscription','teaser','rappel','rappelJ1','rappel3','rappel4','rappel5','rappel6','reset_password') NOT NULL;",
|
||||
"rows": [],
|
||||
"messages": [],
|
||||
"stdout": "",
|
||||
"stderr": "",
|
||||
"execution_time_ms": 180
|
||||
}
|
||||
25
.manus/db/db-query-1768464838613.json
Normal file
25
.manus/db/db-query-1768464838613.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"query": "SELECT * FROM emailTemplates WHERE type = 'reset_password';",
|
||||
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute SELECT * FROM emailTemplates WHERE type = 'reset_password';",
|
||||
"rows": [
|
||||
{
|
||||
"id": "90001",
|
||||
"type": "reset_password",
|
||||
"titre": "Réinitialisation de votre mot de passe",
|
||||
"logoUrl": "NULL",
|
||||
"headerTextColor": "#ffffff",
|
||||
"headerTitle": "Formation Manager Itinova",
|
||||
"bodyContent": "<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p><p>Vous avez demandé la réinitialisation de votre mot de passe.</p><p>Cliquez sur le lien ci-dessous pour définir un nouveau mot de passe :</p><p><a href=\"{{resetLink}}\" style=\"color: #283581; font-weight: bold;\">Réinitialiser mon mot de passe</a></p><p>Ce lien est valable pendant 24 heures.</p><p>Si vous n'avez pas demandé cette réinitialisation, ignorez cet email.</p>",
|
||||
"active": "1",
|
||||
"createdAt": "2026-01-15 08:11:52",
|
||||
"updatedAt": "2026-01-15 08:11:52",
|
||||
"couleurPrincipale": "#283581",
|
||||
"couleurSecondaire": "#0578BE",
|
||||
"piedDePage": "© 2024 Itinova - Tous droits réservés"
|
||||
}
|
||||
],
|
||||
"messages": [],
|
||||
"stdout": "id\ttype\ttitre\tlogoUrl\theaderTextColor\theaderTitle\tbodyContent\tactive\tcreatedAt\tupdatedAt\tcouleurPrincipale\tcouleurSecondaire\tpiedDePage\n90001\treset_password\tRéinitialisation de votre mot de passe\tNULL\t#ffffff\tFormation Manager Itinova\t<p>Bonjour {{prenomApprenant}} {{nomApprenant}},</p><p>Vous avez demandé la réinitialisation de votre mot de passe.</p><p>Cliquez sur le lien ci-dessous pour définir un nouveau mot de passe :</p><p><a href=\"{{resetLink}}\" style=\"color: #283581; font-weight: bold;\">Réinitialiser mon mot de passe</a></p><p>Ce lien est valable pendant 24 heures.</p><p>Si vous n'avez pas demandé cette réinitialisation, ignorez cet email.</p>\t1\t2026-01-15 08:11:52\t2026-01-15 08:11:52\t#283581\t#0578BE\t© 2024 Itinova - Tous droits réservés\n",
|
||||
"stderr": "",
|
||||
"execution_time_ms": 53
|
||||
}
|
||||
8
.manus/db/db-query-error-1768464834426.json
Normal file
8
.manus/db/db-query-error-1768464834426.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"query": "INSERT INTO emailTemplates (type, titre, bodyContent, couleurPrincipale, couleurSecondaire, piedDePage)\nVALUES (\n 'reset_password',\n 'Réinitialisation de votre mot de passe',\n '<p>Bonjour {{prenom}} {{nom}},</p>\\n\\n<p>Vous avez demandé la réinitialisation de votre mot de passe pour votre compte sur la plateforme de gestion des formations Itinova.</p>\\n\\n<p>Pour réinitialiser votre mot de passe, veuillez cliquer sur le lien ci-dessous :</p>\\n\\n<p><a href=\"{{lienReinitialisation}}\" style=\"background-color: {{couleurPrincipale}}; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; display: inline-block;\">Réinitialiser mon mot de passe</a></p>\\n\\n<p>Ce lien est valable pendant 24 heures.</p>\\n\\n<p>Si vous n\\'avez pas demandé cette réinitialisation, vous pouvez ignorer cet email en toute sécurité.</p>\\n\\n<p>Cordialement,<br>L\\'équipe Itinova</p>',\n '#283581',\n '#0578BE',\n 'Itinova - Gestion des Formations | <a href=\"mailto:contact@itinova.fr\">contact@itinova.fr</a>'\n);",
|
||||
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute INSERT INTO emailTemplates (type, titre, bodyContent, couleurPrincipale, couleurSecondaire, piedDePage)\nVALUES (\n 'reset_password',\n 'Réinitialisation de votre mot de passe',\n '<p>Bonjour {{prenom}} {{nom}},</p>\\n\\n<p>Vous avez demandé la réinitialisation de votre mot de passe pour votre compte sur la plateforme de gestion des formations Itinova.</p>\\n\\n<p>Pour réinitialiser votre mot de passe, veuillez cliquer sur le lien ci-dessous :</p>\\n\\n<p><a href=\"{{lienReinitialisation}}\" style=\"background-color: {{couleurPrincipale}}; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; display: inline-block;\">Réinitialiser mon mot de passe</a></p>\\n\\n<p>Ce lien est valable pendant 24 heures.</p>\\n\\n<p>Si vous n\\'avez pas demandé cette réinitialisation, vous pouvez ignorer cet email en toute sécurité.</p>\\n\\n<p>Cordialement,<br>L\\'équipe Itinova</p>',\n '#283581',\n '#0578BE',\n 'Itinova - Gestion des Formations | <a href=\"mailto:contact@itinova.fr\">contact@itinova.fr</a>'\n);",
|
||||
"returncode": 1,
|
||||
"logs": [
|
||||
"ERROR 1062 (23000) at line 1: Duplicate entry '?' for key 'emailTemplates.emailTemplates_type_unique'"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user