From 17cc7f1993e539af00213c9ea2de960a673bb6ed Mon Sep 17 00:00:00 2001 From: Markin Igor <markin.io210@gmail.com> Date: Thu, 7 Feb 2019 16:58:28 +0300 Subject: [PATCH] Fix resetting sessionData. --- javascript/src/iframe/viamapi-iframe.js | 51 +++++++++++-------------- main.go | 5 ++- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index f141c70..49a8c98 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -1383,23 +1383,17 @@ window.currentlyAuthenticatedIdentity = null; window.currentlyLoadedIdentity = null; window.lastTimeGetProfile = 0; -const handleIdentityLogin = async (identity, uuid, token) => { - try { - const { loadedIdentities, viamApi } = window; - const { publicKey } = identity.authentication; - - const deviceHash = await createDeviceHash(publicKey); - - viamApi.setSessionData(uuid, token, deviceHash); - localStorage.setItem("uuid", uuid); - localStorage.setItem("token", token); - localStorage.setItem("authenticatedIdentity", publicKey); - window.currentlyAuthenticatedIdentity = loadedIdentities[publicKey]; - window.lastTimeGetProfile = 0; - setKeyForUUID(uuid, publicKey); - } catch (error) { - console.warn(error); - } +const handleIdentityLogin = (identity, uuid, token) => { + const { loadedIdentities, viamApi } = window; + const { publicKey } = identity.authentication; + + viamApi.setSessionData(uuid, token); + localStorage.setItem("uuid", uuid); + localStorage.setItem("token", token); + localStorage.setItem("authenticatedIdentity", publicKey); + window.currentlyAuthenticatedIdentity = loadedIdentities[publicKey]; + window.lastTimeGetProfile = 0; + setKeyForUUID(uuid, publicKey); }; function executeRestfulFunction(type, that, fn, ...args) { @@ -1411,11 +1405,11 @@ function executeRestfulFunction(type, that, fn, ...args) { if (type === "private" && identity && response.data.code === "400" && response.data.status === "Bad session") { viamApi.identityLogin("previousaddeddevice") - .then(async (response) => { + .then((response) => { if (response.data.code === "200") { const uuid = response.data.data["Uuid"]; const token = response.data.data["Session"]; - await handleIdentityLogin(identity, uuid, token); + handleIdentityLogin(identity, uuid, token); // TODO: Previously there was fn.apply(null, args) where null is probably wrong context for fn.apply() fn.apply(that, args).then(({data}) => executeResult(data)); } else { @@ -1448,11 +1442,12 @@ function loadIdentityInternal(identityKey, pinCode) { if (identityKey === localStorage.getItem("authenticatedIdentity")) { window.currentlyAuthenticatedIdentity = copiedIdentity; - window.viamApi.setIdentity(identityKey); const uuid = localStorage.getItem("uuid"); const token = localStorage.getItem("token"); const deviceHash = await createDeviceHash(identityKey); - window.viamApi.setSessionData(uuid, token, deviceHash); + window.viamApi.setIdentity(identityKey); + window.viamApi.setDeviceHash(deviceHash); + window.viamApi.setSessionData(uuid, token); } window.currentlyLoadedIdentity = copiedIdentity; @@ -1745,7 +1740,7 @@ const connection = Penpal.connectToParent({ } const deviceHash = await createDeviceHash(loginIdentity.authentication.publicKey); - window.viamApi.setSessionData('', '', deviceHash); + window.viamApi.setDeviceHash(deviceHash); window.viamApi.setIdentity(loginIdentity.authentication.publicKey); const identityLoginResponse = @@ -1762,7 +1757,7 @@ const connection = Penpal.connectToParent({ if (code === "200") { if (mode === LOGIN_MODES.SMS || mode === LOGIN_MODES.PREVIOUSLY_ADDED_DEVICE) { - await handleIdentityLogin(loginIdentity, data.Uuid, data.Session, deviceHash); + handleIdentityLogin(loginIdentity, data.Uuid, data.Session); await getProfileData(loginIdentity); if (mode === LOGIN_MODES.PREVIOUSLY_ADDED_DEVICE) { @@ -1865,7 +1860,7 @@ const connection = Penpal.connectToParent({ return new Penpal.Promise(result => { executeRestfulFunction("private", viamApi, viamApi.identityLogout).then(executeResult => { viamApi.setIdentity(""); - viamApi.setSessionData("", "", "", ""); + viamApi.setSessionData("", ""); clearPinCodeTtl(authenticationPublicKey); window.authenticationPublicKey = localStorage.getItem("authenticatedIdentity"); @@ -2128,7 +2123,7 @@ const connection = Penpal.connectToParent({ executeRestfulFunction("public", viamApi, viamApi.marketingSignUpIdentificator, identificator, reference).then(executeResult => { viamApi.setIdentity(""); - viamApi.setSessionData("", "", "", ""); + viamApi.setSessionData("", ""); result(executeResult); }); }); @@ -2139,7 +2134,7 @@ const connection = Penpal.connectToParent({ executeRestfulFunction("public", viamApi, viamApi.marketingGetIdentificatorProfile, identificator, pincode).then(executeResult => { viamApi.setIdentity(""); - viamApi.setSessionData("", "", "", ""); + viamApi.setSessionData("", ""); result(executeResult); }); }); @@ -2150,7 +2145,7 @@ const connection = Penpal.connectToParent({ executeRestfulFunction("public", viamApi, viamApi.marketingExecuteEventForIdentificator, identificator, pincode, event).then(executeResult => { viamApi.setIdentity(""); - viamApi.setSessionData("", "", "", ""); + viamApi.setSessionData("", ""); result(executeResult); }); }); @@ -2384,7 +2379,7 @@ connection.promise.then(parent => { case "Authenticated" : { const uuid = event.payloads[0]; const token = event.payloads[1]; - await handleIdentityLogin(window.currentlyLoadedIdentity, uuid, token); + handleIdentityLogin(window.currentlyLoadedIdentity, uuid, token); const identityToStore = window.currentlyAuthenticatedIdentity; event.payloads = [{fromQRCode: true}]; setIdentityInLocalStorage(identityToStore).then(() => { diff --git a/main.go b/main.go index 09206ad..f688ea9 100644 --- a/main.go +++ b/main.go @@ -79,9 +79,12 @@ func buildViamAPI() string { "}\n\n" - result += "ViamAPI.prototype.setSessionData = function(uuid, token, deviceHash) {\n" + + result += "ViamAPI.prototype.setSessionData = function(uuid, token) {\n" + " this.config.headers.uuid = uuid;\n" + " this.config.headers.token = token;\n" + + "};\n\n" + + result += "ViamAPI.prototype.setDeviceHash = function(deviceHash) {\n" + " this.config.headers.deviceHash = deviceHash;\n" + "};\n\n" -- GitLab