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('authenticationService',
function ($http, $q, $window, $location, $rootScope, $injector, pageService, localResourceDirectoryService, userSession) {
var _auth = {};
var isAuthenticated = false;
var loginUrl, logoutUrl, oauthInfoUrl, tokenUrl;

var appName = pageService.appName;
var clientRedirectUri = "/" + appName + "/";

_auth.readLocalResourceDirectory = function() {
var deferred = $q.defer();
localResourceDirectoryService.fetch().then(function(directory) {
loginUrl = directory['login'];
logoutUrl = directory['logout'];
deferred.resolve();
});
return deferred.promise;
};

_auth.authenticate = function () {
_auth.readLocalResourceDirectory().then(function() {
var authorizeParams = [
"response_type=code",
"state=" + appName + '-' + new Date().getTime(),
"redirect_uri=" + clientRedirectUri,
"scope=STAFF"
];

var loginFormUrl = loginUrl + "?" + authorizeParams.join("&");
$window.open(loginFormUrl, "_self");
});
};

_auth.checkForAuthCode = function(queryString) {
var params = {};
var regex = /([^&=]+)=([^&]*)/g;
var m;

while (m = regex.exec(queryString)) {
params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}

var sessionCode = sessionStorage.getItem('code');
var sessionState = sessionStorage.getItem('state');

if(params['code'] && (params['code'] !== sessionCode)
&& params['state'] && (params['state'] !== sessionState)) {
_auth.saveSessionStates(params['code'], params['state']);
}
return {code: params['code'], state: params['state']};
};

_auth.saveSessionStates = function(code, state) {
sessionStorage.setItem('code', code);
sessionStorage.setItem('state', state);
};

_auth.getNewToken = function (code) {
var deferred = $q.defer();

_auth.readLocalResourceDirectory().then(function () {
$http.get(oauthInfoUrl).then(function (oauthInfoResponse) {
var tokenUrlWithRedirect = tokenUrl + '?code=' + code + '&redirect_uri=' + clientRedirectUri;
$http.get(tokenUrlWithRedirect).then(function (response) {
var token = response.data['access_token'];
_auth.storeSessionToken(token);
sessionStorage.removeItem('code');
sessionStorage.removeItem('state');
deferred.resolve(clientRedirectUri);
}, function() {
$window.open(clientRedirectUri, "_self");
});
});
});

return deferred.promise;
};

_auth.storeSessionToken = function(token) {
if (token !== undefined && token !== 'undefined' && token !== null && token !== 'null') {
sessionStorage.setItem('token', JSON.stringify(token));
}
};

_auth.checkAuthStatus = function () {
var deferred = $q.defer();

userSession.fetch().then(function(session) {
isAuthenticated = session.authenticated;
if(isAuthenticated) {
$injector.invoke(['connectionTimeoutService', function(connectionTimeoutService) {
connectionTimeoutService.run();
}]);
}
deferred.resolve(isAuthenticated);
})

return deferred.promise;
};

_auth.isAuthenticated = function () {
return isAuthenticated;
};

_auth.deleteCookie = function (cookieName) {
document.cookie = encodeURIComponent(cookieName) + '=deleted; expires=' + new Date(0).toUTCString();
};

_auth.wipeSessionData = function () {
var deferred = $q.defer();

isAuthenticated = false;
_auth.deleteCookie('
PII ');
deferred.resolve();

return deferred.promise;
};

_auth.logoutRedirectToLaunchpad = function () {
_auth.wipeSessionData().then(function () {
localResourceDirectoryService.fetch().then(function(directory) {
var logoutUrl = directory['logout'] + '?' + new Date().getTime() + "&redirect_uri=/launchpad/";
$window.open(logoutUrl, "_self");
});
});
};

return _auth;
});
});