diff --git a/core/client/routes/application.js b/core/client/routes/application.js index ebe265ef15..f06756bd7f 100644 --- a/core/client/routes/application.js +++ b/core/client/routes/application.js @@ -25,7 +25,12 @@ var ApplicationRoute = Ember.Route.extend(SimpleAuth.ApplicationRouteMixin, Shor }, sessionAuthenticationFailed: function (error) { - this.notifications.showError(error.message); + if (error.errors) { + this.notifications.showErrors(error.errors); + } else { + // connection errors don't return proper status message, only req.body + this.notifications.showError('There was a problem on the server.'); + } }, sessionAuthenticationSucceeded: function () { diff --git a/core/server/errors/index.js b/core/server/errors/index.js index 5c29d052a5..81afd19c00 100644 --- a/core/server/errors/index.js +++ b/core/server/errors/index.js @@ -286,15 +286,25 @@ errors = { } errors.renderErrorPage(err.status || 500, err, req, res, next); } else { - // generate a valid JSON response var statusCode = 500, - errorContent = {}; + returnErrors = []; - statusCode = err.code || 500; + if (!_.isArray(err)) { + err = [].concat(err); + } - errorContent.message = _.isString(err) ? err : (_.isObject(err) ? err.message : 'Unknown Error'); - errorContent.type = err.type || 'InternalServerError'; - res.json(statusCode, errorContent); + _.each(err, function (errorItem) { + var errorContent = {}; + + statusCode = errorItem.code || 500; + + errorContent.message = _.isString(errorItem) ? errorItem : + (_.isObject(errorItem) ? errorItem.message : 'Unknown Error'); + errorContent.type = errorItem.type || 'InternalServerError'; + returnErrors.push(errorContent); + }); + + res.json(statusCode, {errors: returnErrors}); } } };