From 6d683b5f28489c955b9dc9cfb3cf6522b07ef979 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Tue, 12 Jan 2021 19:10:20 +0100 Subject: [PATCH] feat: add sending of email when structure is validate or not by an admin --- src/configuration/config.ts | 4 +++ .../structureClaimValidation.ejs | 6 +++++ .../structureClaimValidation.json | 3 +++ src/users/users.service.ts | 25 +++++++++++++++++-- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/mailer/mail-templates/structureClaimValidation.ejs create mode 100644 src/mailer/mail-templates/structureClaimValidation.json diff --git a/src/configuration/config.ts b/src/configuration/config.ts index 34c5a4a24..00bbfff6d 100644 --- a/src/configuration/config.ts +++ b/src/configuration/config.ts @@ -25,5 +25,9 @@ export const config = { ejs: 'adminStructureClaim.ejs', json: 'adminStructureClaim.json', }, + structureClaimValidation: { + ejs: 'structureClaimValidation.ejs', + json: 'structureClaimValidation.json', + }, }, }; diff --git a/src/mailer/mail-templates/structureClaimValidation.ejs b/src/mailer/mail-templates/structureClaimValidation.ejs new file mode 100644 index 000000000..eca79ec7f --- /dev/null +++ b/src/mailer/mail-templates/structureClaimValidation.ejs @@ -0,0 +1,6 @@ +Bonjour<br /> +<br /> +La demande de rattachement de structure a votre compte a été <strong><%= status %></strong>. +<br /> +<br /> +Ce mail est un mail automatique. Merci de ne pas y répondre. diff --git a/src/mailer/mail-templates/structureClaimValidation.json b/src/mailer/mail-templates/structureClaimValidation.json new file mode 100644 index 000000000..bdcb607dc --- /dev/null +++ b/src/mailer/mail-templates/structureClaimValidation.json @@ -0,0 +1,3 @@ +{ + "subject": "Votre demande de rattachement, Réseau des Acteurs de la Médiation Numérique de la Métropole de Lyon" +} diff --git a/src/users/users.service.ts b/src/users/users.service.ts index 649ed4c88..c4c4a5a25 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -13,7 +13,7 @@ import { EmailChangeDto } from './dto/change-email.dto'; @Injectable() export class UsersService { - constructor(@InjectModel(User.name) private userModel: Model<IUser>, private mailerService: MailerService) {} + constructor(@InjectModel(User.name) private userModel: Model<IUser>, private readonly mailerService: MailerService) {} /** * Create a user account @@ -126,7 +126,7 @@ export class UsersService { } /** - * Generate activation token and send it to user by email, in order to validate + * Send to all admins validation email for structures * a new account. * @param user User */ @@ -144,6 +144,23 @@ export class UsersService { }); } + /** + * Send approval email for user + * a new account. + * @param user User + */ + private async sendStructureClaimApproval(userEmail: string, status: boolean): Promise<any> { + const config = this.mailerService.config; + const ejsPath = this.mailerService.getTemplateLocation(config.templates.structureClaimValidation.ejs); + const jsonConfig = this.mailerService.loadJsonConfig(config.templates.structureClaimValidation.json); + + const html = await ejs.renderFile(ejsPath, { + config, + status: status ? 'accepté' : 'refusée', + }); + this.mailerService.send(userEmail, jsonConfig.subject, html); + } + /** * Check that the given token is associated to userId. If it's true, validate user account. * @param userId string @@ -309,6 +326,7 @@ export class UsersService { validate: boolean ): Promise<{ userEmail: string; structureId: number }[]> { const users = await this.findOne(userEmail); + let status = false; if (!users) { throw new HttpException('User not found', HttpStatus.NOT_FOUND); } @@ -317,7 +335,10 @@ export class UsersService { // If it's a validation case, push structureId into validated user structures if (validate) { users.structuresLink.push(structureId); + // Send validation email + status = true; } + this.sendStructureClaimApproval(userEmail, status); await users.save(); return this.getPendingStructures(); } else { -- GitLab