From 9724c656cb65ac7ceb9853f02c546bb118099140 Mon Sep 17 00:00:00 2001
From: igorwork <markin.io210@gmail.com>
Date: Thu, 2 May 2019 11:52:55 +0300
Subject: [PATCH] Rework logout to destroy authentication before request.

---
 javascript/src/iframe/viamapi-iframe.js | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index dcb57ed..44fbe67 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -27,9 +27,6 @@ const ViamAPI = require('../../temp/viamapi');
 
 var identityColors = ["#994392", "#cb0767", "#e51d31", "#ec671b", "#fab610"];
 
-/** This flag blocks execution of getNewEvents while we logging out **/
-let logoutInProgress = false;
-
 function getNextColor() {
   var colorIndex = localStorage.getItem("colorIndex");
   if (colorIndex == null || colorIndex === "") {
@@ -723,17 +720,20 @@ const connection = Penpal.connectToParent({
           };
         }
 
-        logoutInProgress = true;
+        // Clone headers to be able destroy authentication first
+        const headers = {...window.viamApi.getConfig().headers};
+
+        destroyAuthentication();
 
         const identityLogoutResponse = await executeRestfulFunction(
           "private",
           window.viamApi,
           window.viamApi.identityLogout,
-          null
+          {
+            headers
+          }
         );
 
-        destroyAuthentication();
-
         return identityLogoutResponse;
       } catch (e) {
         return {
@@ -741,8 +741,6 @@ const connection = Penpal.connectToParent({
           code: "400",
           status: e.message
         };
-      } finally {
-        logoutInProgress = false;
       }
     },
     identityRestoreAccess(restoreAccessIdentity, identificator) {
@@ -1425,10 +1423,6 @@ connection.promise.then(parent => {
   }
 
   setInterval(() => {
-    if (logoutInProgress) {
-      return;
-    }
-
     if (window.currentlyLoadedIdentity && !anynomousDeviceKeyEventsProcessing && !window.currentlyAuthenticatedIdentity) {
       getNewEventsWithoutSession();
     }
-- 
GitLab