"use strict"; angular.module("vocabulary") .service("loginAndContinueService", ["$location", "IS_AUTHORIZED_AS_TEACHER", function ($location, IS_AUTHORIZED_AS_TEACHER) { var locationKey = "loginAndContinueLocation"; var dataKey = "loginAndContinueData"; var urlKey = "continueAfterLogin"; return { loginIfNotAuthorized: loginIfNotAuthorized, getDataAndClearCache: getDataAndClearCache, isDataInCache: isDataInCache, saveData: saveData, isAuthorized: isAuthorized }; function isAuthorized() { return IS_AUTHORIZED_AS_TEACHER; } function loginIfNotAuthorized(data, redirectUrl) { if (IS_AUTHORIZED_AS_TEACHER) { return true; } saveData(data); redirectUrl = redirectUrl || $location.url(); doLogin(redirectAfterLoginUrl(redirectUrl)); } function saveData(data) { var currUrl = $location.url(); sessionStorage.setItem(locationKey, currUrl); var dataAsString = JSON.stringify(data); sessionStorage.setItem(dataKey, dataAsString); } function getDataAndClearCache() { var currUrl = $location.url(); var result = null; if (currUrl.indexOf(urlKey) >= 0) { $location.search(urlKey, null); currUrl = $location.url(); if (currUrl == sessionStorage.getItem(locationKey)) { var dataAsString = sessionStorage.getItem(dataKey); if (dataAsString && dataAsString !== 'undefined') { result = JSON.parse(dataAsString); } } } sessionStorage.setItem(locationKey, ""); sessionStorage.setItem(dataKey, ""); return result; } function isDataInCache(itemKey) { var dataAsString = sessionStorage.getItem(dataKey); if (dataAsString && dataAsString !== 'undefined') { var json = JSON.parse(dataAsString); return json ? !!json[itemKey] : false; } } function redirectAfterLoginUrl(url) { var separatorChar = url.indexOf("?") >= 0 ? "&" : "?"; return "/#!" + url + separatorChar + urlKey; } }]);