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