From d8d10cd764ecca494de41f787f9389dda9ffb2f7 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 20 Feb 2018 11:20:55 +0100 Subject: [PATCH] when session expire, reload of webpage is enforced (in case of logged user redirection to login page is enforced) --- frontend-js/src/main/js/NetworkError.js | 4 ++++ frontend-js/src/main/js/ServerConnector.js | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/frontend-js/src/main/js/NetworkError.js b/frontend-js/src/main/js/NetworkError.js index 438539ed6b..109b0ff5e6 100644 --- a/frontend-js/src/main/js/NetworkError.js +++ b/frontend-js/src/main/js/NetworkError.js @@ -2,6 +2,7 @@ /* exported logger */ +// noinspection JSUnusedLocalSymbols var logger = require('./logger'); function NetworkError(message, connectionParams) { @@ -13,6 +14,9 @@ function NetworkError(message, connectionParams) { this.statusCode = connectionParams.statusCode; this.url = connectionParams.url; this.content = connectionParams.content; + if (this.content === undefined) { + this.content = ""; + } } NetworkError.prototype = Object.create(Error.prototype); diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index e7e6662fe6..4b020e2468 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -158,6 +158,18 @@ ServerConnector.sendRequest = function (params) { }); }).then(function () { return content; + }, function (error) { + if (error instanceof NetworkError) { + if (error.statusCode === HttpStatus.FORBIDDEN && error.content.indexOf('"reason":"Invalid token"') >= 0) { + self.getSessionData().setToken(undefined); + if (self.getSessionData().getLogin() === "anonymous") { + window.location.reload(false); + } else { + window.location.href = ServerConnector.getServerBaseUrl() + "login.xhtml?from=" + encodeURI(window.location.href); + } + } + } + return Promise.reject(error); }); }; -- GitLab