From 9158010d4a41a52c6745f2febf14a466b2ed54c2 Mon Sep 17 00:00:00 2001 From: ccheng-dev Date: Fri, 5 Jan 2024 15:04:45 +0100 Subject: [PATCH] fix(Tinebase/js): force reload when login to outdated client --- tine20/Tinebase/Frontend/Json.php | 5 +++++ tine20/Tinebase/js/LoginPanel.js | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tine20/Tinebase/Frontend/Json.php b/tine20/Tinebase/Frontend/Json.php index e210cb1b906..be6adb9cd0c 100644 --- a/tine20/Tinebase/Frontend/Json.php +++ b/tine20/Tinebase/Frontend/Json.php @@ -662,6 +662,11 @@ protected function _getLoginSuccessResponse($username) 'jsonKey' => Tinebase_Core::get('jsonKey'), 'welcomeMessage' => "Welcome to Tine 2.0!" ); + + try { + $response['assetHash'] = Tinebase_Frontend_Http_SinglePageApplication::getAssetHash(); + } catch (Exception $e) {} + if (Tinebase_Core::get(Tinebase_Core::SESSION)->encourage_mfa) { $response['encourage_mfa'] = true; } diff --git a/tine20/Tinebase/js/LoginPanel.js b/tine20/Tinebase/js/LoginPanel.js index 29e90a44e60..183ebe0727a 100644 --- a/tine20/Tinebase/js/LoginPanel.js +++ b/tine20/Tinebase/js/LoginPanel.js @@ -547,9 +547,17 @@ Tine.Tinebase.LoginPanel = Ext.extend(Ext.Panel, { }, onLoginSuccess: function(response) { - var responseData = Ext.util.JSON.decode(response.responseText); + const responseData = Ext.util.JSON.decode(response.responseText); if (responseData.success === true) { Ext.MessageBox.wait(String.format(i18n._('Login successful. Loading {0}...'), Tine.title), i18n._('Please wait!')); + + if (responseData?.assetHash && Tine.clientVersion.assetHash !== responseData.assetHash) { + Tine.Tinebase.common.reload({ + keepRegistry: false, + clearCache: true + }); + } + window.document.title = this.originalTitle; response.responseData = responseData; this.onLogin.call(this.scope, response);