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 d824dc8959d..9d37658e0b5 100644 --- a/tine20/Tinebase/js/LoginPanel.js +++ b/tine20/Tinebase/js/LoginPanel.js @@ -551,12 +551,20 @@ 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) { if (window.initialData?.afterLoginRedirect) { return this.redirect(window.initialData.afterLoginRedirect); } 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);