· 7 years ago · Jan 24, 2018, 07:34 PM
1/**
2 * Created by guilherme on 03/05/16.
3 */
4angular.module('alferes.services')
5 .service('oauthFixInterceptor',['$q','$rootScope','OAuthToken', function($q, $rootScope, OAuthToken) {
6 return {
7 request: function request(config) {
8
9 if ( OAuthToken.getAuthorizationHeader() ) {
10 config.headers = config.headers || {};
11 config.headers.Authorization = OAuthToken.getAuthorizationHeader();
12 }
13
14 return config;
15 },
16 responseError: function responseError(rejection) {
17
18 var deferred = $q.defer();
19
20 if (400 === rejection.status && rejection.data
21 && ("invalid_request" === rejection.data.error || "invalid_grant" === rejection.data.error)) {
22 OAuthToken.removeToken();
23 $rootScope.$emit("oauth:error",
24 {
25 rejection: rejection,
26 deferred: deferred
27 });
28 }
29 if (401 === rejection.status && rejection.data
30 && "access_denied" === rejection.data.error
31 || rejection.headers("www-authenticate") && 0 === rejection.headers("www-authenticate").indexOf("Bearer")) {
32 $rootScope.$emit("oauth:error", {
33 rejection: rejection,
34 deferred: deferred
35 });
36 return deferred.promise;
37 }
38
39 return $q.reject(rejection);
40 }
41 };
42
43 }]);