diff --git a/modules/core/client/config/core.client.routes.js b/modules/core/client/config/core.client.routes.js index 6fc0d79fc0..9a89d6c326 100644 --- a/modules/core/client/config/core.client.routes.js +++ b/modules/core/client/config/core.client.routes.js @@ -36,17 +36,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..f1192d4915 100644 --- a/modules/core/client/views/400.client.view.html +++ b/modules/core/client/views/400.client.view.html @@ -1,6 +1,9 @@ -

Bad Request

+ diff --git a/modules/core/client/views/403.client.view.html b/modules/core/client/views/403.client.view.html index 151968d5e1..320980c931 100644 --- a/modules/core/client/views/403.client.view.html +++ b/modules/core/client/views/403.client.view.html @@ -1,4 +1,6 @@ -

Forbidden

+