Skip to content

Instantly share code, notes, and snippets.

@zeroows
Created April 23, 2015 13:12
Show Gist options
  • Save zeroows/d88552654b56f5bc993b to your computer and use it in GitHub Desktop.
Save zeroows/d88552654b56f5bc993b to your computer and use it in GitHub Desktop.
/*
* Register error provider that shows message on failed requests
* or redirects to login page on unauthenticated requests
*/
$httpProvider.interceptors.push(function($q, $rootScope, $location, $log, alertsService) {
return {
'responseError' : function(rejection) {
if (!rejection.config.ignoreAuthModule) {
switch (rejection.status) {
case 202:
alertsService.danger("Rejected request: " + rejection.data.reason);
break;
case 401:
var deferred = $q.defer();
$log.warn("Login required");
$rootScope.$broadcast('event:auth-loginRequired', rejection);
$location.path("/login");
return deferred.promise;
case 403:
$log.warn("Can not access this");
$location.path("/login");
$rootScope.$broadcast('event:auth-forbidden', rejection);
break;
case 417:
alertsService.danger("Rejected request: " + rejection.data.reason);
break;
case 404:
alertsService.danger("Request cannot be found: " + rejection.data.reason);
break;
default:
alertsService.danger("Error Occured, Please try later, <br/> Server Message: " + rejection.data.reason);
break;
}
}
// otherwise, default behavior
return $q.reject(rejection);
}
};
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment