Summary Table
| Categories |
Total Count |
| PII |
1 |
| URL |
0 |
| DNS |
0 |
| EKL |
0 |
| IP |
0 |
| PORT |
0 |
| VsID |
0 |
| CF |
0 |
| AI |
0 |
| VPD |
0 |
| PL |
0 |
| Other |
0 |
File Content
define(['angular', 'app'], function (angular, app) {
"use strict";
app.service("connectionTimeoutService", function ($timeout, $modal, $window, unsavedWarningSharedService, userSession) {
var service = {};
var timeToExpire,
defaultExpiration = 0,
timeUnitsText = "minutes",
timeUnitText = "minute",
oneMinute = 60000,
twoMinutes = 2 * oneMinute,
threeMinutes = 3 * oneMinute,
conversionFactor = 1000,
sessionEnded = false,
timeoutPromise,
modalInstance,
modalInfo = {value: null, dismissed: true};
var timeoutDialogController = function () {
var waitTime;
timeToExpire = getTimeToExpire();
if (timeToExpire <= threeMinutes) {
showTimeoutWarning(timeToExpire);
waitTime = timeToNearestMinute(timeToExpire);
}
else {
dismissModal();
waitTime = timeToExpire - threeMinutes;
}
if (!sessionEnded) {
$timeout.cancel(timeoutPromise);
timeoutPromise = $timeout(function () {
timeoutDialogController();
}, waitTime, false);
}
};
var getTimeToExpire = function () {
if (userSession) {
var encodedJwtToken = userSession.getCookie("
PII
");
var jwtCookie;
var exp;
if (encodedJwtToken !== null) {
jwtCookie = service.parseJwt(encodedJwtToken);
exp = (jwtCookie.exp * conversionFactor) - new Date().getTime();
} else {
exp = defaultExpiration;
}
return exp;
}
};
var timeToNearestMinute = function (timeToExpire) {
if (timeToExpire > threeMinutes) {
return timeToExpire - threeMinutes;
} else if (timeToExpire > twoMinutes) {
return timeToExpire - twoMinutes;
} else if (timeToExpire > oneMinute) {
return timeToExpire - oneMinute;
} else {
return timeToExpire;
}
}
var dismissModal = function () {
if (angular.isDefined(modalInstance) && !modalInfo.dismissed) {
modalInfo.dismissed = true;
modalInstance.dismiss();
}
};
var openModal = function (template, controller, modalInfo) {
dismissModal();
modalInstance = $modal.open({
windowTemplateUrl: 'src/ui-components/modals/helper/modal-window_template.html',
templateUrl: template,
controller: controller,
backdrop: 'static',
keyboard: false,
resolve: {
modalInfo: function () {
return modalInfo;
}
}
});
};
var showTimeoutWarning = function (timeToExpire) {
var minutesToExpire = Math.round(parseInt(timeToExpire, 10) / oneMinute);
if (minutesToExpire <= 0) {
sessionEnded = true;
unsavedWarningSharedService.cleanAllForms();
openModal('src/core/connection/session_ended_template.html', ModalInstanceCtrl, modalInfo);
angular.element("div.container-fluid").remove();
}
else {
modalInfo.value = minutesToExpire;
modalInfo.unit = modalInfo.value !== 1 ? timeUnitsText : timeUnitText;
openModal('src/core/connection/timeout_warning_template.html', ModalInstanceCtrl, modalInfo);
}
};
service.run = function () {
timeoutDialogController();
};
service.showSessionEndedMsg = function () {
sessionEnded = true;
unsavedWarningSharedService.cleanAllForms();
angular.element("div.container-fluid").remove();
openModal('src/core/connection/session_ended_template.html', ModalInstanceCtrl, modalInfo);
};
service.parseJwt = function(token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
return JSON.parse($window.atob(base64));
}
return service;
});
});
function ModalInstanceCtrl($scope, $timeout, $modalInstance, modalInfo, authenticationService, userSession, focusService, pageService) {
modalInfo.dismissed = false;
$timeout(function () {
focusService.focusTopModal();
}, 600);
$scope.logout = function () {
$modalInstance.dismiss();
authenticationService.logoutRedirectToLaunchpad();
};
$scope.proceed = function () {
$modalInstance.dismiss();
userSession.refreshSession();
modalInfo.dismissed = true;
$modalInstance.result.finally(function(){
focusService.focusMain();
});
};
$scope.launchpad = function () {
$modalInstance.dismiss();
pageService.redirectToLaunchpad();
};
$scope.login = function () {
$modalInstance.dismiss();
authenticationService.authenticate();
};
$scope.modalInfo = modalInfo;
}