diff --git a/js/9.8/createTemplate.js b/js/9.8/createTemplate.js index 1b1e05b..6ebbc00 100644 --- a/js/9.8/createTemplate.js +++ b/js/9.8/createTemplate.js @@ -7,18 +7,6 @@ function createTemplate(template = false) { //set current page value in activeState object activeState.activePage = "createTemplate"; - - //check if user is authenticated and templateFilesArray is decryptable - let tF = retrieveData("templateFiles"); - if (tF != "") { - try { - tF = JSON.parse(tF); - } catch (e) { - alert("Decryption failed; are you authenticated?"); - window.location.reload(); - return; - } - } if (screen.width > 992) { diff --git a/js/9.8/files.js b/js/9.8/files.js index c0a7ecf..b7a3b84 100644 --- a/js/9.8/files.js +++ b/js/9.8/files.js @@ -14,17 +14,8 @@ function buildFile() { //set current page value in activeState object activeState.activePage = "files"; - //check if user is authenticated and templateFilesArray is decryptable - let tF = retrieveData("templateFiles"); - if (tF != "") { - try { - tF = JSON.parse(tF); - } catch (e) { - alert("Decryption failed; are you authenticated?"); - window.location.reload(); - return; - } - } + //set templateFiles array + let tF = JSON.parse(retrieveData("templateFiles")); if (tF == null) { //console.log("none yet"); diff --git a/js/9.8/scripts.js b/js/9.8/scripts.js index c5f2e52..3903c7e 100644 --- a/js/9.8/scripts.js +++ b/js/9.8/scripts.js @@ -78,6 +78,48 @@ export function getUsrId() { return cyrb53(fingerprint + passwordHash); } +export function sessionVerification() { + let verfiedStatus = window.sessionStorage.getItem(sha256("verified")); + if (verfiedStatus == '') {verfiedStatus = null} + if (verfiedStatus != null) { + //user logged in + + //write verifiedStatus content into passwordHash for decode check later + //passwordHash.set(XORCipher.decode(sha256("passwordHash"), verfiedStatus)); + //document.getElementById("login").style.display = "none"; + //load NavigationBar with templates according to server + + let data; + try { + data = window.sessionStorage.getItem(sha256(passwordHash.name)); + } catch (e) { + verfiedStatus = null; + } + if (data === null) verfiedStatus = null; + + let tF = retrieveData("templateFiles"); + try { + tF = JSON.parse(tF); + } catch(e) { + verfiedStatus = null; + } + + } else { + //check if cookie exists + if (getCookie(sha256("verified")) != null) { + //passwordHash.set(XORCipher.decode(sha256("passwordHash"), getCookie(sha256("verified")))); + //document.getElementById("login").style.display = "none"; + //load NavigationBar with templates according to server + //initweb(); + } else { + //document.getElementById("login").style.display = "block"; + } + } + + if (verfiedStatus == null) window.stop(); + console.log('v: ',verfiedStatus); +} + const cyrb53 = (str, seed = 21) => { let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed; @@ -93,4 +135,26 @@ const cyrb53 = (str, seed = 21) => { return 4294967296 * (2097151 & h2) + (h1 >>> 0); }; +function setCookie(cname, cvalue, exdays) { + const d = new Date(); + d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); + let expires = "expires="+d.toUTCString(); + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; +} + +export function getCookie(cname) { + let name = cname + "="; + let ca = document.cookie.split(';'); + for(let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return null; +} + export default setPassword; diff --git a/js/9.8/storage.js b/js/9.8/storage.js index 5dbf6d4..3f1b576 100644 --- a/js/9.8/storage.js +++ b/js/9.8/storage.js @@ -120,16 +120,13 @@ function getFileName() { } let lT = activeState.loadedTemplate; - let tF = retrieveData("templateFiles"); - if (tF != "") { - try { - tF = JSON.parse(tF); - } catch (e) { - alert("Decryption failed; are you authenticated?"); - window.location.reload(); - return; - } + let tF = null; + try { + tF = JSON.parse(retrieveData("templateFiles")); + } catch(e) { + tF = null; } + if (tF != null) { for (let tFi of tF) { if (tFi.fileName == currentFileName) {return currentFileName}; diff --git a/js/9.8/web.js b/js/9.8/web.js index 44da8f5..51f0c27 100644 --- a/js/9.8/web.js +++ b/js/9.8/web.js @@ -3,7 +3,7 @@ import { loadFileDivCallBack } from "./files.js"; import { retrieveData, clearData, getFileName, importBookShelf } from "./storage.js"; import { insertTextBlocks } from "./evts.js"; import { createTemplate, createTemplateCallBack} from "./createTemplate.js"; -import { getUsrId } from "./scripts.js"; +import { getUsrId, sessionVerification } from "./scripts.js"; function loadTemplate(template, newFlag = false, loadOnly = false) { document.getElementById("siteTitle").innerHTML = template.replace(/_/g, " "); @@ -70,6 +70,10 @@ function loadTemplate(template, newFlag = false, loadOnly = false) { } function loadNewTemplate(template) { + + //sessionVerfication check + sessionVerification(); + //set current page value in activeState object activeState.activePage = "template";