diff --git a/routes/api/users/index.js b/routes/api/users/index.js index 20d117503..1e0203f07 100644 --- a/routes/api/users/index.js +++ b/routes/api/users/index.js @@ -7,6 +7,8 @@ const fs = require('fs'); const path = require('path'); const resetEmailFile = fs.readFileSync(path.resolve(__dirname, '../../../views/password-reset-email.ejs')); const resetEmailTemplate = ejs.compile(resetEmailFile.toString()); +const notificationEmailFile = fs.readFileSync(path.resolve(__dirname, '../../../views/notification-email.ejs')); +const notificationEmailTemplate = ejs.compile(notificationEmailFile.toString()); const authorization = require('../../../middleware/authorization'); const csrf = require('csurf'); @@ -64,6 +66,25 @@ router.post('/:user_id/status', parseForm, csrfProtection, (req, res, next) => { .catch(next); }); +router.post('/:user_id/email', authorization.needed('admin'), parseForm, csrfProtection, (req, res, next) => { + User.find(req.user_id) + .then(user => { + const options = { + subject: req.subject, + from: process.env.TALK_SMTP_FROM_ADDRESS, + to: user.email, + html: notificationEmailTemplate({ + body: req.body + }) + }; + + return mailer.sendSimple(options); + }) + .then(() => { + res.status(204).end(); + }); +}); + router.post('/', parseForm, csrfProtection, (req, res, next) => { const {email, password, displayName} = req.body; diff --git a/views/notification-email.ejs b/views/notification-email.ejs new file mode 100644 index 000000000..b36560ec5 --- /dev/null +++ b/views/notification-email.ejs @@ -0,0 +1 @@ +<%= body %>