From 418f98e5d209d84690b76cc06643e97db1347e7c Mon Sep 17 00:00:00 2001 From: Rik Smale Date: Sun, 8 Dec 2024 12:12:25 +0100 Subject: [PATCH] fix(body-membership): send email to workspace admins for new members --- config/index.js | 3 +++ lib/constants.js | 3 ++- middlewares/body-memberships.js | 13 +++++++++++++ middlewares/join-requests.js | 13 +++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/config/index.js b/config/index.js index 6e5c1884..5ce3cf1b 100644 --- a/config/index.js +++ b/config/index.js @@ -17,6 +17,9 @@ const config = { listserv_email: process.env.LISTSERV_EMAIL || 'listserv@example.com', listserv_endpoint: process.env.LISTSERV_ENDPOINT || 'https://lists.example.com/subscribe', listserv_token: process.env.LISTSERV_TOKEN || 'CHANGEME', + google_workspace_notifications: [ + 'workspace-admins@aegee.eu' + ], logger: { silent: false, level: process.env.LOGLEVEL || 'info' diff --git a/lib/constants.js b/lib/constants.js index 5fc78e70..d03c610d 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -90,7 +90,8 @@ module.exports = { MAIL_CHANGE: 'MyAEGEE: Email change', PASSWORD_RESET: 'MyAEGEE: Password reset request', NEW_JOIN_REQUEST: 'MyAEGEE: New join request for your body', - NEW_MEMBER: 'MyAEGEE: Welcome to AEGEE' + NEW_MEMBER: 'MyAEGEE: Welcome to AEGEE', + WORKSPACE_NEW_MEMBER: 'MyAEGEE: A new member has joined their first local' }, RESTRICTED_EMAILS: ['aegee.org', 'aegee.eu'], LISTSERV_LISTS: ['AEGEE-L', 'AEGEENEWS-L', 'ANNOUNCE-L', 'AEGEE-EVENT-L'] diff --git a/middlewares/body-memberships.js b/middlewares/body-memberships.js index 625ab867..65df3568 100644 --- a/middlewares/body-memberships.js +++ b/middlewares/body-memberships.js @@ -10,6 +10,7 @@ const { sequelize, Sequelize } = require('../lib/sequelize'); const mailer = require('../lib/mailer'); const constants = require('../lib/constants'); const errors = require('../lib/errors'); +const config = require('../config'); exports.listAllMemberships = async (req, res) => { if (req.query.holds_permission) { @@ -129,6 +130,18 @@ exports.createMembership = async (req, res) => { body_id: req.currentBody.id } }); + + await mailer.sendMail({ + to: config.google_workspace_notifications, + subject: constants.MAIL_SUBJECTS.WORKSPACE_NEW_MEMBER, + template: 'workspace_new_member.html', + parameters: { + member_firstname: user.first_name, + member_lastname: user.last_name, + user_id: user.id, + member_email: user.email + } + }); } }); diff --git a/middlewares/join-requests.js b/middlewares/join-requests.js index 95adaf9e..fabdae05 100644 --- a/middlewares/join-requests.js +++ b/middlewares/join-requests.js @@ -5,6 +5,7 @@ const constants = require('../lib/constants'); const logger = require('../lib/logger'); const mailer = require('../lib/mailer'); const { Sequelize, sequelize } = require('../lib/sequelize'); +const config = require('../config'); exports.listAllJoinRequests = async (req, res) => { if (!req.permissions.hasPermission('view:join_request')) { @@ -128,6 +129,18 @@ exports.changeRequestStatus = async (req, res) => { body_id: req.currentBody.id } }); + + await mailer.sendMail({ + to: config.google_workspace_notifications, + subject: constants.MAIL_SUBJECTS.WORKSPACE_NEW_MEMBER, + template: 'workspace_new_member.html', + parameters: { + member_firstname: user.first_name, + member_lastname: user.last_name, + user_id: user.id, + email: user.email + } + }); } await req.currentJoinRequest.update({ status: req.body.status }, { transaction: t });