From a1530c041ac0f0f156fe97b743f6e7ce574e844a Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Mon, 1 Jan 2018 15:39:14 -0800 Subject: [PATCH] fix(Auth): Error type in json payload --- server/boot/authentication.js | 12 ++++++------ server/middlewares/error-handlers.js | 1 + server/views/account/email-signin.jade | 20 +++++++++++++++++--- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/server/boot/authentication.js b/server/boot/authentication.js index 88f8ae3878..ded7047e18 100644 --- a/server/boot/authentication.js +++ b/server/boot/authentication.js @@ -66,13 +66,13 @@ module.exports = function enableAuthentication(app) { const passwordlessGetValidators = [ check('email') .isBase64() - .withMessage('email should be a base64 encoded string'), + .withMessage('Email should be a base64 encoded string.'), check('token') .exists() - .withMessage('token should exist') + .withMessage('Token should exist.') // based on strongloop/loopback/common/models/access-token.js#L15 .isLength({ min: 64, max: 64 }) - .withMessage('token is not the right length') + .withMessage('Token is not the right length.') ]; function getPasswordlessAuth(req, res, next) { @@ -83,7 +83,7 @@ module.exports = function enableAuthentication(app) { } = {} } = req; const validation = validationResult(req) - .formatWith(createValidatorErrorFormatter('info', '/email-signup')); + .formatWith(createValidatorErrorFormatter('errors', '/email-signup')); if (!validation.isEmpty()) { const errors = validation.array(); @@ -193,12 +193,12 @@ module.exports = function enableAuthentication(app) { const passwordlessPostValidators = [ check('email') .isEmail() - .withMessage('email is not a valid email address') + .withMessage('Email is not a valid email address.') ]; function postPasswordlessAuth(req, res, next) { const { body: { email } = {} } = req; const validation = validationResult(req) - .formatWith(createValidatorErrorFormatter('info', '/email-signup')); + .formatWith(createValidatorErrorFormatter('errors', '/email-signup')); if (!validation.isEmpty()) { const errors = validation.array(); return next(errors.pop()); diff --git a/server/middlewares/error-handlers.js b/server/middlewares/error-handlers.js index b257970e10..7792f4e04a 100644 --- a/server/middlewares/error-handlers.js +++ b/server/middlewares/error-handlers.js @@ -89,6 +89,7 @@ export default function prodErrorHandler() { } else if (type === 'json') { res.setHeader('Content-Type', 'application/json'); return res.send({ + type: handled.type || 'errors', message }); // plain text diff --git a/server/views/account/email-signin.jade b/server/views/account/email-signin.jade index 7e63b3e016..819c90d904 100644 --- a/server/views/account/email-signin.jade +++ b/server/views/account/email-signin.jade @@ -74,11 +74,25 @@ block content } }) .done(data =>{ - if(data && data.message){ + if(data && data.message) { + var alertType = 'alert-'; + switch (data.type) { + case 'errors': { + alertType += 'danger'; + break + } + case 'success': { + alertType += 'success'; + break + } + default: { + alertType += 'info'; + } + } $('#flash-content').html(data.message); $('#flash-board') - .removeClass('alert-info') - .addClass('alert-success') + .removeClass('alert-info alert-success alert-error') + .addClass(alertType) .fadeIn(); disableMagicButton(false); }