From 0d83a48452dec44ef71d94d1397eff56cc1511b1 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 29 Jan 2020 22:16:57 +0100 Subject: [PATCH] use Taskmanager to send email with correct locale --- server/api/controller/user.js | 22 ++++++---------------- server/api/mail.js | 20 ++++++++++++++------ 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/server/api/controller/user.js b/server/api/controller/user.js index eed5c81f..d661bca8 100644 --- a/server/api/controller/user.js +++ b/server/api/controller/user.js @@ -209,7 +209,7 @@ const userController = { if (!req.body.password) { delete req.body.password } if (!user.is_active && req.body.is_active && user.recover_code) { - mail.send(user.email, 'confirm', { user, config }) + mail.send(user.email, 'confirm', { user, config }, req.settings.locale) } await user.update(req.body) @@ -230,20 +230,10 @@ const userController = { req.body.recover_code = crypto.randomBytes(16).toString('hex') debug('Register user ', req.body.email) const user = await User.create(req.body) - try { - debug(`Sending registration email to ${user.email}`) - mail.send(user.email, 'register', { user, config }) - mail.send(config.admin_email, 'admin_register', { user, config }) - } catch (e) { - return res.status(400).json(e) - } - const payload = { - id: user.id, - email: user.email, - scope: [user.is_admin ? 'admin' : 'user'] - } - const token = jwt.sign(payload, config.secret) - res.json({ token, user }) + debug(`Sending registration email to ${user.email}`) + mail.send(user.email, 'register', { user, config }, req.settings.locale) + mail.send(config.admin_email, 'admin_register', { user, config }, req.settings.locale) + res.sendStatus(200) } catch (e) { res.status(404).json(e) } @@ -254,7 +244,7 @@ const userController = { req.body.is_active = true req.body.recover_code = crypto.randomBytes(16).toString('hex') const user = await User.create(req.body) - mail.send(user.email, 'user_confirm', { user, config }) + mail.send(user.email, 'user_confirm', { user, config }, req.settings.locale) res.json(user) } catch (e) { res.status(404).json(e) diff --git a/server/api/mail.js b/server/api/mail.js index 252e5086..69fdec69 100644 --- a/server/api/mail.js +++ b/server/api/mail.js @@ -4,12 +4,20 @@ const moment = require('moment') const config = require('config') const settings = require('./controller/settings') const debug = require('debug')('email') - -// TOFIX -moment.locale('it') +const { Task, TaskManager } = require('../taskManager') const mail = { - send (addresses, template, locals) { + send (addresses, template, locals, locale) { + const task = new Task({ + name: 'MAIL', + removable: true, + method: mail._send, + args: [addresses, template, locals, locale] + }) + TaskManager.add(task) + }, + + _send (addresses, template, locales, locale) { debug(`Send ${template} email to ${addresses}`) const email = new Email({ views: { root: path.join(__dirname, '..', 'emails') }, @@ -43,8 +51,8 @@ const mail = { bcc: config.admin_email }, locals: { - ...locals, - locale: 'it', // TOFIX + ...locales, + locale, config: { title: config.title, baseurl: config.baseurl, description: config.description }, datetime: datetime => moment.unix(datetime).format('ddd, D MMMM HH:mm') }