diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 958679bc7f57f7ca7eb43cbfae850a220b3d5f28..25e867db8d1b3004d719e3a18be753728bb4384f 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -1286,12 +1286,12 @@ function extendPinCodeTtl(key, pinCode) { clearPinCodeTtl(key) return false } else { - var ttl = now.getTime() + 10 * 60 * 1000; + var ttl = now.getTime() + 24 * 60 * 60 * 1000; window.sessionStorage.setItem("pincodettls/" + key, ttl); } } else { var now = new Date(); - var ttl = now.getTime() + 10 * 60 * 1000; + var ttl = now.getTime() + 24 * 60 * 60 * 1000; window.sessionStorage.setItem("pincodettls/" + key, ttl); window.sessionStorage.setItem("pincodes/" + key, pinCode); } @@ -1362,8 +1362,7 @@ function executeRestfulFunction(type, that, fn, ...args) { fn.apply(that, args).then((response) => { if (response.data.code == "400" && response.data.status == "Bad session") { console.log("Trying to login again") - if (currentlyAuthenticatedIdentity != "" && currentlyAuthenticatedIdentity != null - && localStorage.getItem("didLogout") != "true") { + if(currentlyAuthenticatedIdentity != "" && currentlyAuthenticatedIdentity != null) { viamApi.identityLogin("previousaddeddevice").then((response1) => { if (response1.data.code == "200") { //console.log(response.data.data) @@ -1385,8 +1384,7 @@ function executeRestfulFunction(type, that, fn, ...args) { } }); } else { - if (currentlyLoadedIdentity != "" && currentlyLoadedIdentity != null && - localStorage.getItem("didLogout") != "true") { + if(currentlyLoadedIdentity != "" && currentlyLoadedIdentity != null) { viamApi.identityLogin("previousaddeddevice").then((response1) => { if (response1.data.code == "200") { //console.log(response.data.data) @@ -1481,6 +1479,11 @@ function changeIdentityPinCodeInternal(key, oldPinCode, newPinCode) { console.log("Storing identity with pincode: " + identity.pinCode) setIdentityInLocalStorage(identity).then(() => { + result({ + "data": "", + "code": "200", + "status": "Successfully changed pincode" + }); }).catch((e) => { result({ "data": "", @@ -1488,6 +1491,12 @@ function changeIdentityPinCodeInternal(key, oldPinCode, newPinCode) { "status": "Cannot store identity " + e }); }); + }).catch((e) => { + result({ + "data": "", + "code": "400", + "status": "Cannot get identity " + e + }); }); }); } @@ -1667,11 +1676,47 @@ const connection = Penpal.connectToParent({ }) }); }, - register(registerIdentity, email, name, surname, family, phoneNumber) { + confirmIdentificator(identity, confirmationCodeArg) { + return new Penpal.Promise(result => { + viamApi.setIdentity(identity.authentication.publicKey) + + executeRestfulFunction("public", viamApi, viamApi.identityConfirmIdentificator,confirmationCodeArg).then(executeResult => { + result(executeResult); + }); + }); + }, + identityGetIdentificatorByRegisterToken(identity, tokenArg) { + return new Penpal.Promise(result => { + viamApi.setIdentity(identity.authentication.publicKey) + + executeRestfulFunction("public", viamApi, viamApi.identityGetIdentificatorByRegisterToken,tokenArg).then(executeResult => { + result(executeResult); + }); + }); + }, + submitIdentificator(identity, identificatorArg, registerToken) { + return new Penpal.Promise(result => { + viamApi.setIdentity(identity.authentication.publicKey) + + executeRestfulFunction("public", viamApi, viamApi.identitySubmitIdentificator,identificatorArg, registerToken).then(executeResult => { + result(executeResult); + }); + }); + }, + submitRegisterClaims(identity, givennameArg,familynameArg,emailArg,phonenumberArg) { + return new Penpal.Promise(result => { + viamApi.setIdentity(identity.authentication.publicKey) + + executeRestfulFunction("public", viamApi, viamApi.identitySubmitRegisterClaims,givennameArg,familynameArg,emailArg,phonenumberArg).then(executeResult => { + result(executeResult); + }); + }); + }, + agreeOnRegistration(registerIdentity) { return new Penpal.Promise(result => { viamApi.setIdentity(registerIdentity.authentication.publicKey) - executeRestfulFunction("public", viamApi, viamApi.identityRegister, email, name,surname, family, phoneNumber).then(executeResult => { + executeRestfulFunction("public", viamApi, viamApi.identityAgreeOnRegistration).then(executeResult => { console.log("Profile updated in set identity") let sequence = Promise.resolve() @@ -1729,7 +1774,6 @@ const connection = Penpal.connectToParent({ localStorage.setItem("token", token) localStorage.setItem("authenticatedIdentity", loginIdentity.authentication.publicKey) - localStorage.removeItem("didLogout") setKeyForUUID(uuid, loginIdentity.authentication.publicKey) currentlyAuthenticatedIdentity = loadedIdentities[loginIdentity.authentication.publicKey] lastTimeGetProfile = 0; @@ -1757,7 +1801,6 @@ const connection = Penpal.connectToParent({ localStorage.setItem("token", token) localStorage.setItem("authenticatedIdentity", loginIdentity.authentication.publicKey) - localStorage.removeItem("didLogout") setKeyForUUID(uuid, loginIdentity.authentication.publicKey) currentlyAuthenticatedIdentity = loadedIdentities[loginIdentity.authentication.publicKey] lastTimeGetProfile = 0; @@ -1897,7 +1940,6 @@ const connection = Penpal.connectToParent({ localStorage.removeItem("uuid") localStorage.removeItem("token") localStorage.removeItem("authenticatedIdentity") - localStorage.setItem("didLogout", "true") delete loadedIdentities[authenticationPublicKey] //console.log("Set loaded identity in logout") currentlyLoadedIdentity = null @@ -2270,6 +2312,17 @@ const connection = Penpal.connectToParent({ }) connection.promise.then(parent => { + + window.addEventListener('storage', event => { + if (event.key === "authenticatedIdentity" && event.newValue === null) { + var publicKey = currentlyAuthenticatedIdentity.authentication.publicKey + currentlyLoadedIdentity = null + currentlyAuthenticatedIdentity = null + var event = createEvent("LogoutFromAnotherTab", "Logout", [publicKey]) + parent.onEvent(event) + } + }); + var identities = localStorage.getItem("identities") console.log("Library loaded at: " + new Date().toISOString()) @@ -2423,7 +2476,7 @@ connection.promise.then(parent => { lastTimeGetProfile = 0; var identityToStore = currentlyAuthenticatedIdentity - event.payloads = [] + event.payloads = [{fromQRCode: true}]; console.log(identityToStore) setIdentityInLocalStorage(identityToStore).then(() => { console.log(identityToStore)