diff --git a/CHANGELOG b/CHANGELOG index e7624beee301b56bc7909a34adfdab09659ad208..58d54e527fc797c24725c9c207ad8cddf143068c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,8 @@ minerva (13.1.1) stable; urgency=medium inside compartment (#856) * Bug fix: searching for some drugs in chembl didn't provide any results even though that data exists, for instance 'DORLIMOMAB ARITOX' (#842) + * Bug fix: user wasn't logged out in all tabs when the log out event appeard + in only one of them (#847) -- Piotr Gawron <piotr.gawron@uni.lu> Fri, 28 Jun 2019 17:00:00 +0200 diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 85501f0bf4eacf00f650ee92f6cb9d8c27cdcad6..6ee653204b71ede288aa1fd7791abb19bde56ec8 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -99,6 +99,30 @@ ServerConnector.getMinOverlayColorInt = function () { }); }; +ServerConnector.checkIfUserLogoutFromDifferentTab = function () { + var self = this; + var sessionLogin = self.getSessionData(null).getLogin(); + var tabLogin = self._currentTabLogin; + if (tabLogin === undefined) { + self._currentTabLogin = ServerConnector.getSessionData(null).getLogin(); + tabLogin = self._currentTabLogin; + } + if (tabLogin !== sessionLogin) { + setTimeout(function () { + var sessionLogin = self.getSessionData(null).getLogin(); + var tabLogin = self._currentTabLogin; + if (tabLogin !== sessionLogin) { + logger.warn("User was log out in different tab. Reloading page"); + window.location.reload(false); + } + }, 100); + } +}; + +setInterval(function () { + ServerConnector.checkIfUserLogoutFromDifferentTab(); +}, 1000); + ServerConnector.returnUserOrSystemColor = function (userColor, systemPromisedColor) { return systemPromisedColor.then(function (systemColor) { var color = userColor; @@ -1884,9 +1908,10 @@ ServerConnector.login = function (login, password) { if (data["login"] !== undefined) { params.login = data["login"]; } + self._currentTabLogin = params.login; self.getSessionData().setLogin(params.login); return Promise.resolve(self.getSessionData().getToken()); - }, function (error) { + }).catch(function (error) { if (error instanceof NetworkError && error.statusCode === HttpStatus.FORBIDDEN) { throw new InvalidCredentialsError("Invalid credentials"); } else { @@ -2815,5 +2840,4 @@ ServerConnector.submitErrorToMinervaNet = function (report, callback) { }, callback); }; - module.exports = ServerConnector; diff --git a/frontend-js/src/test/js/ServerConnector-mock.js b/frontend-js/src/test/js/ServerConnector-mock.js index ca183829e0a588a06cb1ad42f32c3767b56cae63..2690d77827111f9bf99555320e49902950161c57 100644 --- a/frontend-js/src/test/js/ServerConnector-mock.js +++ b/frontend-js/src/test/js/ServerConnector-mock.js @@ -43,6 +43,10 @@ function encodeParams(params) { return result; } +ServerConnectorMock.checkIfUserLogoutFromDifferentTab = function () { + logger.debug("checkIfUserLogoutFromDifferentTab is ignored"); +}; + ServerConnectorMock._sendRequest = function (params) { var self = this; var url = params.url;