From c7a2f3ab006227d9f6cd90e9fbf54fb25d058504 Mon Sep 17 00:00:00 2001 From: hyperreality Date: Thu, 15 Sep 2016 11:17:07 -0400 Subject: [PATCH 1/2] Added 400 and 404 custom error messages --- .../client/config/core.client.route-filter.js | 2 +- .../core/client/config/core.client.routes.js | 22 ++++++++++++++----- .../controllers/error.client.controller.js | 18 +++++++++++++++ .../auth-interceptor.client.service.js | 6 +++++ .../core/client/views/400.client.view.html | 3 ++- .../core/client/views/404.client.view.html | 3 ++- 6 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 modules/core/client/controllers/error.client.controller.js diff --git a/modules/core/client/config/core.client.route-filter.js b/modules/core/client/config/core.client.route-filter.js index 4d7c605492..a68b70231f 100644 --- a/modules/core/client/config/core.client.route-filter.js +++ b/modules/core/client/config/core.client.route-filter.js @@ -25,7 +25,7 @@ if (!allowed) { event.preventDefault(); - if (Authentication.user !== null && typeof Authentication.user === 'object') { + if (Authentication.user !== undefined && typeof Authentication.user === 'object') { $state.transitionTo('forbidden'); } else { $state.go('authentication.signin').then(function () { diff --git a/modules/core/client/config/core.client.routes.js b/modules/core/client/config/core.client.routes.js index 6fc0d79fc0..fe660cae1d 100644 --- a/modules/core/client/config/core.client.routes.js +++ b/modules/core/client/config/core.client.routes.js @@ -21,9 +21,7 @@ // Redirect to 404 when route not found $urlRouterProvider.otherwise(function ($injector, $location) { - $injector.get('$state').transitionTo('not-found', null, { - location: false - }); + $injector.get('$state').transitionTo('not-found'); }); $stateProvider @@ -36,17 +34,31 @@ .state('not-found', { url: '/not-found', templateUrl: 'modules/core/client/views/404.client.view.html', + controller: 'ErrorController', + controllerAs: 'vm', + params: { + message: function($stateParams) { + return $stateParams.message; + } + }, data: { ignoreState: true, - pageTitle: 'Not-Found' + pageTitle: 'Not Found' } }) .state('bad-request', { url: '/bad-request', templateUrl: 'modules/core/client/views/400.client.view.html', + controller: 'ErrorController', + controllerAs: 'vm', + params: { + message: function($stateParams) { + return $stateParams.message; + } + }, data: { ignoreState: true, - pageTitle: 'Bad-Request' + pageTitle: 'Bad Request' } }) .state('forbidden', { diff --git a/modules/core/client/controllers/error.client.controller.js b/modules/core/client/controllers/error.client.controller.js new file mode 100644 index 0000000000..5968f34315 --- /dev/null +++ b/modules/core/client/controllers/error.client.controller.js @@ -0,0 +1,18 @@ +(function () { + 'use strict'; + + angular + .module('core') + .controller('ErrorController', ErrorController); + + ErrorController.$inject = ['$stateParams']; + + function ErrorController($stateParams) { + var vm = this; + vm.errorMessage = null; + + // Display custom message if it was set + if ($stateParams.message) vm.errorMessage = $stateParams.message; + } +}()); + diff --git a/modules/core/client/services/interceptors/auth-interceptor.client.service.js b/modules/core/client/services/interceptors/auth-interceptor.client.service.js index 2929402804..97486209dd 100644 --- a/modules/core/client/services/interceptors/auth-interceptor.client.service.js +++ b/modules/core/client/services/interceptors/auth-interceptor.client.service.js @@ -17,6 +17,9 @@ function responseError(rejection) { if (!rejection.config.ignoreAuthModule) { switch (rejection.status) { + case 400: + $injector.get('$state').go('bad-request', { message: rejection.data.message }); + break; case 401: // Deauthenticate the global user Authentication.user = null; @@ -25,6 +28,9 @@ case 403: $injector.get('$state').transitionTo('forbidden'); break; + case 404: + $injector.get('$state').go('not-found', { message: rejection.data.message }); + break; } } // otherwise, default behaviour diff --git a/modules/core/client/views/400.client.view.html b/modules/core/client/views/400.client.view.html index efc28045ef..c9df944578 100644 --- a/modules/core/client/views/400.client.view.html +++ b/modules/core/client/views/400.client.view.html @@ -2,5 +2,6 @@

Bad Request

diff --git a/modules/core/client/views/404.client.view.html b/modules/core/client/views/404.client.view.html index e8e6d82cc1..5b7a760c38 100644 --- a/modules/core/client/views/404.client.view.html +++ b/modules/core/client/views/404.client.view.html @@ -1,5 +1,6 @@

Page Not Found

From 50879f090d670641268f5492be80729930f85c5a Mon Sep 17 00:00:00 2001 From: hyperreality Date: Thu, 15 Sep 2016 11:21:09 -0400 Subject: [PATCH 2/2] nicer error message views --- modules/core/client/config/core.client.route-filter.js | 2 +- modules/core/client/config/core.client.routes.js | 4 +++- modules/core/client/views/400.client.view.html | 4 +++- modules/core/client/views/403.client.view.html | 4 +++- modules/core/client/views/404.client.view.html | 4 +++- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/core/client/config/core.client.route-filter.js b/modules/core/client/config/core.client.route-filter.js index a68b70231f..4d7c605492 100644 --- a/modules/core/client/config/core.client.route-filter.js +++ b/modules/core/client/config/core.client.route-filter.js @@ -25,7 +25,7 @@ if (!allowed) { event.preventDefault(); - if (Authentication.user !== undefined && typeof Authentication.user === 'object') { + if (Authentication.user !== null && typeof Authentication.user === 'object') { $state.transitionTo('forbidden'); } else { $state.go('authentication.signin').then(function () { diff --git a/modules/core/client/config/core.client.routes.js b/modules/core/client/config/core.client.routes.js index fe660cae1d..9a89d6c326 100644 --- a/modules/core/client/config/core.client.routes.js +++ b/modules/core/client/config/core.client.routes.js @@ -21,7 +21,9 @@ // Redirect to 404 when route not found $urlRouterProvider.otherwise(function ($injector, $location) { - $injector.get('$state').transitionTo('not-found'); + $injector.get('$state').transitionTo('not-found', null, { + location: false + }); }); $stateProvider diff --git a/modules/core/client/views/400.client.view.html b/modules/core/client/views/400.client.view.html index c9df944578..f1192d4915 100644 --- a/modules/core/client/views/400.client.view.html +++ b/modules/core/client/views/400.client.view.html @@ -1,4 +1,6 @@ -

Bad Request

+