github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/static/app/shipyard.jwt.js (about) 1 (function() { 2 'use strict'; 3 4 angular 5 .module('shipyard') 6 .service('spinnerInterceptor', function($q, $rootScope) { 7 var service = this; 8 var nLoadings = 0; 9 service.request = function(request) { 10 nLoadings += 1; 11 $rootScope.isLoadingView = true; 12 return request; 13 } 14 service.response = function(response) { 15 nLoadings -= 1; 16 if (nLoadings === 0) { 17 $rootScope.isLoadingView = false; 18 } 19 return response; 20 }; 21 service.responseError = function(response) { 22 nLoadings -= 1; 23 if (!nLoadings) { 24 $rootScope.isLoadingView = false; 25 } 26 return $q.reject(response); 27 }; 28 }) 29 .service('errorInterceptor', function($q, $rootScope) { 30 var service = this; 31 service.responseError = function(response) { 32 if(response.status === 401) { 33 console.log("401"); 34 $rootScope.$state.go('login'); 35 } else if(response.status === 403) { 36 $rootScope.$state.go('403'); 37 } else if(response.status > 400) { 38 return $q.reject(response); 39 } 40 return response; 41 }; 42 }) 43 .config([ 44 '$httpProvider', 45 'jwtInterceptorProvider', 46 function ($httpProvider, jwtInterceptorProvider) { 47 jwtInterceptorProvider.tokenGetter = function() { 48 // Temporary solution to get angular-jwt to use our header format 49 jwtInterceptorProvider.authHeader = "X-Access-Token"; 50 jwtInterceptorProvider.authPrefix = ""; 51 52 return localStorage.getItem('X-Access-Token'); 53 }; 54 55 $httpProvider.interceptors.push('jwtInterceptor'); 56 $httpProvider.interceptors.push('spinnerInterceptor'); 57 $httpProvider.interceptors.push('errorInterceptor'); 58 } 59 ]); 60 })(); 61