From a02eda2866cd43ec1794f66af6f7dee7069f1725 Mon Sep 17 00:00:00 2001
From: Alexey Lunin <alexey.lunin@vereign.com>
Date: Sun, 31 Mar 2019 20:16:51 +0400
Subject: [PATCH] clear authentication values on clearing identities. Set
 correct session data on first login attempt (previous clients could have
 obsoleted session data uuid and token and worked incorrectly)

---
 javascript/src/iframe/viamapi-iframe.js | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 91c0fd2..299e912 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -520,18 +520,15 @@ const connection = Penpal.connectToParent({
         }
       });
     },
-    clearIdentities() {
-      return new Penpal.Promise(result => {
-        var identitiesTemp = listIdentitiesFromLocalStorage();
+    clearIdentities: async () => {
+      destroyAuthentication();
 
-        for(var i in identitiesTemp) {
-          destroyIdentityFromLocalStorage(i)
-        }
-        result({"data" : "",
-          "code" : "200",
-          "status" : "Identities cleared"
-        })
-      });
+      const identitiesTemp = listIdentitiesFromLocalStorage();
+
+      for (const i in identitiesTemp) {
+        destroyIdentityFromLocalStorage(i);
+      }
+      return encodeResponse("200", "", "Identities cleared");
     },
     confirmIdentificator(identity, confirmationCodeArg) {
       return new Penpal.Promise(result => {
@@ -612,6 +609,7 @@ const connection = Penpal.connectToParent({
       }
 
       const deviceHash = await createDeviceHash(loginIdentity.authentication.publicKey);
+      window.viamApi.setSessionData("", "");
       window.viamApi.setDeviceHash(deviceHash);
       window.viamApi.setIdentity(loginIdentity.authentication.publicKey);
 
@@ -751,6 +749,7 @@ const connection = Penpal.connectToParent({
     },
     identityRestoreAccess(restoreAccessIdentity, identificator) {
       return new Penpal.Promise(result => {
+        viamApi.setSessionData("", "");
         viamApi.setIdentity(restoreAccessIdentity.authentication.publicKey);
 
         executeRestfulFunction("public", viamApi, viamApi.identityRestoreAccess, null, identificator).then(executeResult => {
-- 
GitLab