76 lines
4.9 KiB
JavaScript
76 lines
4.9 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Created by igor.samulenko on 5/28/2014.
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
angular.module('securityModule').config(['$httpProvider', function ($httpProvider) {
|
|
$httpProvider.interceptors.push([
|
|
'$injector', function ($injector) {
|
|
return $injector.get('authInterceptor');
|
|
}
|
|
]);
|
|
}]);
|
|
angular.module('securityModule').factory('authInterceptor', ['$rootScope', '$q', 'AUTH_EVENTS', '$injector', 'session', '$filter',
|
|
function ($rootScope, $q, AUTH_EVENTS, $injector, session, $filter) {
|
|
return {
|
|
response: function (response) {
|
|
if (localStorage.getItem('sessionActive') === "true" && !_.includes(response.config.url, '/smartit/rest/sessionstatus') && !_.includes(response.config.url, '/smartit/rest/serverstates') && localStorage.getItem('pwaDomain') && (_.includes(response.config.url, '/smartit/rest') || _.includes(response.config.url, '/smartit/restapi')) && response.status === 200) {
|
|
if (response.config.url && response.config.url === '/smartit/rest/keepAlive') {
|
|
return response;
|
|
}
|
|
localStorage.setItem('smartITActivity', 'true');
|
|
}
|
|
return response;
|
|
},
|
|
responseError: function (response) {
|
|
if ((response.status !== 500) && !(session.expired && (response.status === 403 || response.status === 503))) {
|
|
var $modalStack = $injector.get('$modalStack'); //for some reason Angular cannot inject $modalStack on factory Init
|
|
$modalStack.dismissAll(); //close modal/action blade on session expires
|
|
}
|
|
if (response.status === 401) {
|
|
if (response.data && response.data.search('MOBILITY_ERROR_SESSION_EXPIRED')) {
|
|
session.expired = true;
|
|
response.data.error = $filter('i18n')('error.MOBILITY_ERROR_SESSION_EXPIRED');
|
|
$rootScope.$broadcast(AUTH_EVENTS.SESSION_EXPIRED, response);
|
|
}
|
|
else {
|
|
$rootScope.$broadcast(AUTH_EVENTS.NOT_AUTHORIZED, response);
|
|
}
|
|
}
|
|
if (response.data && response.data.ARConnectionProblem) {
|
|
response.data.error = response.data.additionalMessage;
|
|
$rootScope.$broadcast(AUTH_EVENTS.AR_CONNECTION_FAILED, response);
|
|
}
|
|
if (!session.expired && response.status === 403 && response.data && (response.data.error === 'MOBILITY_ERROR_SESSION_EXPIRED' || (_.isString(response.data) && response.data.indexOf('MOBILITY_ERROR_SESSION_EXPIRED') !== -1))) {
|
|
session.expired = true;
|
|
if (typeof response.data === 'string') {
|
|
response.data = {};
|
|
}
|
|
response.data.error = $filter('i18n')('error.MOBILITY_ERROR_SESSION_EXPIRED');
|
|
$rootScope.$broadcast(AUTH_EVENTS.SESSION_EXPIRED, response);
|
|
}
|
|
//if (!session.expired && response.status === 503 && response.data && ( _.isString(response.data.error) && response.data.error.indexOf('Application failed to initialize metadata correctly') !== -1)) {
|
|
if (!session.expired && response.status === 503 && response.data && (_.isString(response.data.error) && response.data.error.indexOf('503-SERVICE UNAVAILABLE') !== -1)) {
|
|
session.expired = true;
|
|
if (typeof response.data === 'string') {
|
|
response.data = {};
|
|
}
|
|
response.data.error = response.data.error;
|
|
$rootScope.$broadcast(AUTH_EVENTS.INITIALIZE_METADATA_ERROR, response);
|
|
}
|
|
//if (!session.expired && response.status === 503 && response.data && ( _.isString(response.data.error) && response.data.error.indexOf('Application failed to initialize metadata correctly') !== -1)) {
|
|
if (!session.expired && response.status === 503 && response.data && (_.isString(response.data.error) && response.data.error.indexOf('503-SERVICE UNAVAILABLE') !== -1)) {
|
|
session.expired = true;
|
|
if (typeof response.data === 'string') {
|
|
response.data = {};
|
|
}
|
|
response.data.error = response.data.error;
|
|
$rootScope.$broadcast(AUTH_EVENTS.INITIALIZE_METADATA_ERROR, response);
|
|
}
|
|
return $q.reject(response);
|
|
}
|
|
};
|
|
}]);
|
|
})();
|