PageSourceSearch

https://fxboss.firstcitizens.com/app/assets/authentication/services/authInterceptor.js?v=31082026-1758

js firstcitizens.com collected 2026-09-24 21:52:01 UTC 4,987 bytes, 116 lines download raw bytes

1app.factory('AuthInterceptor', [ '$injector', '$rootScope', '$q', 'AUTH_EVENTS',
2function($injector, $rootScope, $q, AUTH_EVENTS) {
3	 var onFlyAuthRequest = null;
4	 var contextPath = window.location.pathname.substring(0, window.location.pathname.indexOf("/",2));
5	return {
6		request: function(config) {
7            config.headers = config.headers || {};
8            if (config.url.indexOf('.html') == -1 && keycloak.token){
9				config.headers.user_ref_id = $rootScope.user_ref_id; 
10				config.headers.Authorization = 'Bearer ' + keycloak.token;
11			}
12			if (config.url.indexOf('.html') == -1 && $rootScope.authToken) {
13				config.headers["Boss-Auth-Token"] = $rootScope.authToken;
14				config.headers.user_ref_id = $rootScope.user_ref_id;
15			}
16            return config;
17        },
18        
19		responseError : function(response) {
20			console.log("From layout AuthInterceptor");
21			var deferred = $q.defer();
22			switch (response.status) {
23				case 401:
24					if(!localStorage.getItem('isUserAlive') || localStorage.getItem('isUserAlive')=="false"){
25	        			window.location.href = $rootScope.logoutURL + "/sso/logout";
26	        		}
27					console.assert(true, "response - 401: ", response);
28					if(response.config.headers.authToken && $rootScope.authToken){
29						 if(!onFlyAuthRequest) {
30							 onFlyAuthRequest = $injector.get("$http").get(contextPath + '/user/refreshToken', {params: { 'clientUser':$rootScope.currentUser.userId, }});
31						 }// IF
32	                    
33						 onFlyAuthRequest.then(function(res) {
34	                    	onFlyAuthRequest = null;
35	                    	console.assert(true, "validateResponse: ", res);
36	                    	if(res.data.refreshToken){
37	                    		$rootScope.authToken = res.data.refreshToken;
38		                    	sessionStorage.authToken = res.data.refreshToken;
39		                    	response.config.headers.authToken = res.data.refreshToken;
40	                    		$injector.get("$http")(response.config).then(function(resp) {
41		                    		deferred.resolve(resp);
42		                    	},function(resp) {
43		                    		deferred.reject();
44		                    	});
45	                    	}else if(parseInt(res.data.status) == 403){
46	                    		$rootScope.$broadcast({ 403 : AUTH_EVENTS.notAuthorized, }[response.status], response);
47	                    		if(!$rootScope.preventErrorMsg){
48	        						let errorMsg= response.data?.message;
49									errorMsg = errorMsg ? errorMsg : response.statusText;
50									$rootScope.displayExceptionToUser(response.status,
51										errorMsg,
52										response.config.url,
53										response.config.method);
54	        					}
55	                    	}
56	                    }).catch(function(fallback) {
57	                    	onFlyAuthRequest = null;
58	        				console.error("Error while refresh the token: ", fallback);
59	        				return;
60	        			});
61	                    return deferred.promise;
62					}else{
63                		$rootScope.$broadcast({ 401 : AUTH_EVENTS.notAuthenticated, }[response.status], response);
64                		if(!$rootScope.preventErrorMsg){
65    						$rootScope.displayExceptionToUser(response.status, response.statusText, response.config.url, response.config.method);
66    					}
67                	}
68                   
69                    break;
70                    
71				 default:
72					 $rootScope.$broadcast({
73							//401 : AUTH_EVENTS.notAuthenticated,
74							403 : AUTH_EVENTS.notAuthorized,
75							419 : AUTH_EVENTS.sessionTimeout,
76							440 : AUTH_EVENTS.sessionTimeout
77					 }[response.status], response);
78					/*
79					if (response.status > 399) { // assuming that any code over 399 is an error
80						$q.reject(response)
81					}*/
82					//This method is defined on rootScope to display a modal with error.
83					if(!$rootScope.preventErrorMsg){
84						let errorMsg = response.data?.message;
85						errorMsg = errorMsg ? errorMsg : response.statusText;
86						if (response.status === 403 && errorMsg && errorMsg.includes("Invalid authorization header")) {
87							response.config.headers.authToken = response.data.refreshToken;
88							$injector.get("$http")(response.config).then(function (resp) {
89								deferred.resolve(resp);
90							}, function (resp) {
91								deferred.reject();
92							});
93						} else {
94							if(!errorMsg){
95								if (typeof response.data === 'object') {
96									errorMsg = response.data.error;
97								} else if(response.data && response.data.indexOf("<html")!=-1){
98									const doc = new DOMParser().parseFromString(response.data, 'text/html');
99									const paragraphs = doc.querySelectorAll('h2');
100									if(paragraphs && paragraphs[0]){
101										errorMsg = paragraphs[0].textContent;
102									}
103								}
104							}
105							$rootScope.displayExceptionToUser(response.status,
106								errorMsg,
107								response.config.url,
108								response.config.method);
109						}
110					}
111					return deferred.promise;
112                    break;
113			}; // switch
114		} // end responseError
115	};
116} ]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.