Checkpoint: Ajout du bouton "Tester le rappel" dans AdminSequences.tsx :
- Ajout de la mutation testerRappelMutation connectée à la procédure tRPC rappels.testerRappel - Ajout de l'icône Send dans les imports - Ajout du bouton dans la colonne Actions du tableau des séquences (entre Edit et Delete) - Le bouton envoie un email de test à l'administrateur avec les données de la séquence sélectionnée - Validation : le bouton est désactivé si la séquence n'a pas de dates configurées - Feedback utilisateur : toast de succès ou d'erreur après l'envoi - Mise à jour du fichier todo.md pour marquer la tâche comme terminée
This commit is contained in:
30
server/db.ts
30
server/db.ts
@@ -611,12 +611,15 @@ export async function deleteUser(id: number) {
|
||||
|
||||
// ==================== GESTION DES TOKENS DE RÉINITIALISATION ====================
|
||||
|
||||
export async function createPasswordResetToken(userId: number, token: string, expiresAt: Date) {
|
||||
export async function createPasswordResetToken(email: string, token: string) {
|
||||
const db = await getDb();
|
||||
if (!db) throw new Error("Database not available");
|
||||
|
||||
const expiresAt = new Date();
|
||||
expiresAt.setHours(expiresAt.getHours() + 24); // Token valide 24h
|
||||
|
||||
const result = await db.insert(passwordResetTokens).values({
|
||||
userId,
|
||||
email,
|
||||
token,
|
||||
expiresAt,
|
||||
used: false,
|
||||
@@ -1266,3 +1269,26 @@ export async function getAdminUsers() {
|
||||
|
||||
return await db.select().from(users).where(eq(users.role, 'admin'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
export async function getUtilisateurByEmail(email: string) {
|
||||
const db = await getDb();
|
||||
if (!db) return undefined;
|
||||
|
||||
const result = await db.select()
|
||||
.from(users)
|
||||
.where(eq(users.email, email))
|
||||
.limit(1);
|
||||
|
||||
return result.length > 0 ? result[0] : undefined;
|
||||
}
|
||||
|
||||
export async function updateUtilisateurPassword(userId: number, hashedPassword: string): Promise<void> {
|
||||
const db = await getDb();
|
||||
if (!db) throw new Error("Database not available");
|
||||
|
||||
await db.update(users)
|
||||
.set({ password: hashedPassword })
|
||||
.where(eq(users.id, userId));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user