From d01fa8b4478d2924442dbdb223210e3815c2f997 Mon Sep 17 00:00:00 2001 From: Michael Schramm Date: Sun, 12 Apr 2020 18:07:20 +0200 Subject: [PATCH] fix composer error message for mailhog, add more error handling --- app/controllers/errors.server.controller.js | 2 +- .../users.authentication.server.controller.js | 30 +++++++++++-------- docker-compose.yml | 1 + 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/controllers/errors.server.controller.js b/app/controllers/errors.server.controller.js index 78dc8771..50647792 100755 --- a/app/controllers/errors.server.controller.js +++ b/app/controllers/errors.server.controller.js @@ -24,7 +24,7 @@ exports.getErrorMessage = function(err) { var message = ''; if(!err) { - return ''; + return 'Unknown Error'; } else if(typeof err === 'string'){ message = err; } else if (err.code) { diff --git a/app/controllers/users/users.authentication.server.controller.js b/app/controllers/users/users.authentication.server.controller.js index 4bb853f5..0c757cbe 100755 --- a/app/controllers/users/users.authentication.server.controller.js +++ b/app/controllers/users/users.authentication.server.controller.js @@ -19,7 +19,6 @@ var nev = require('email-verification')(mongoose); // NEV setup and configuration ================ var config_nev = function () { - nev.configure({ verifyMailOptions: { @@ -32,12 +31,12 @@ var config_nev = function () { persistentUserModel: User, tempUserCollection: config.tempUserCollection, - emailAndUsernameUnique: true, + emailAndUsernameUnique: true, expirationTime: 86400, // 24 hours verificationURL: config.baseUrl+'/#!/verify/${URL}', transportOptions: config.mailer.options, - + verifySendMailCallback: function(err, info) { if (err) { throw err; @@ -79,7 +78,7 @@ exports.validateVerificationToken = function(req, res){ // redirect to resend verification email else { return res.status(400).send( {message: 'Verification token is invalid or has expired'} ); - } + } }); }; @@ -126,6 +125,7 @@ exports.signup = function(req, res) { // Then save the temporary user nev.createTempUser(user, function (err, existingPersistentUser, newTempUser) { if (err) { + console.error('failed to register user', err) return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); @@ -133,11 +133,17 @@ exports.signup = function(req, res) { // new user created if (newTempUser) { - const fn = pug.compileFile(__dirname + '/../../views/verification.email.view.pug'); - var renderedHtml = fn(res.locals); + let renderedHtml; + try { + let fn = pug.compileFile(__dirname + '/../../views/verification.email.view.pug', {}); + renderedHtml = fn(res.locals); + } catch (e) { + console.error('failed to compile mail template', e); + renderedHtml = 'welcome!'; + } - var URL = newTempUser[nev.options.URLFieldName]; - var emailTemplate = { + let URL = newTempUser[nev.options.URLFieldName]; + let emailTemplate = { subject: i18n.__('VERIFICATION_EMAIL_SUBJECT'), html: renderedHtml, text: i18n.__('VERIFICATION_EMAIL_TEXT') @@ -145,11 +151,12 @@ exports.signup = function(req, res) { nev.sendVerificationEmail(user.email, URL, emailTemplate, function (sendEmailErr, info) { if (sendEmailErr) { + console.error('failed to send verification email', sendEmailErr) return res.status(400).send({ - message: errorHandler.getErrorMessage(err) + message: 'Could not send Verification Email' }); } - return res.status(200).send('An email has been sent to you. Please check it to verify your account.'); + return res.status(200).send({message: 'An email has been sent to you. Please check it to verify your account.'}); }); } else { return res.status(400).send({message: 'User with username/email already exists!'}); @@ -161,7 +168,6 @@ exports.signup = function(req, res) { * Signin after passport authentication */ exports.signin = function(req, res, next) { - passport.authenticate('local', function(err, user, info) { if (err || !user) { res.status(400).send(info); @@ -179,7 +185,7 @@ exports.signin = function(req, res, next) { } res.cookie('langCookie', user.language, { maxAge: 90000, httpOnly: true }); - + user = helpers.removeSensitiveModelData('private_user', user.toJSON()); return res.json(user); }); diff --git a/docker-compose.yml b/docker-compose.yml index 8144fb95..3560b6df 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,6 +21,7 @@ services: REDIS_URL: redis://redis MAILER_SMTP_HOST: mail MAILER_SMTP_PORT: 1025 + MAILER_PASSWORD: 'NONE' # command: grunt dev # override command to have livereloading on file change links: - mongo