From fe4f1826066d3570ef0fa497a9b69308e3d56cc8 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Wed, 2 Nov 2022 22:37:15 +0100 Subject: [PATCH] https://github.com/the-djmaze/snappymail/issues/561#issuecomment-1301317723 --- .../snappymail/lib/Util/SnappyMailHelper.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php index 0aa55f175..2b461e1ad 100644 --- a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php +++ b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php @@ -101,22 +101,28 @@ class SnappyMailHelper } } } else { - $aCredentials = static::getLoginCredentials(); - $ocSession = \OC::$server->getSession(); $doLogin = !$oActions->getMainAccountFromToken(false); - if (!$doLogin && $ocSession['snappymail-uid'] && $ocSession['snappymail-uid'] != $aCredentials[0]) { + $aCredentials = static::getLoginCredentials(); + // https://github.com/the-djmaze/snappymail/issues/561#issuecomment-1301317723 + // $ocSession['snappymail-uid'] Always NULL, so we use a cookie +// $ocSession = \OC::$server->getSession(); +// if (!$doLogin && $ocSession['snappymail-uid'] && $ocSession['snappymail-uid'] != $aCredentials[0]) { + if (!$doLogin && !empty($_COOKIE['snappymail-uid']) && $_COOKIE['snappymail-uid'] != $aCredentials[0]) { // UID changed, Impersonate plugin probably active - $ocSession['snappymail-uid'] = false; + \setcookie('snappymail-uid'); $oActions->Logout(true); $doLogin = true; +// $this->logger->warning("Logout {$_COOKIE['snappymail-uid']}", ['app' => 'SnappyMail']); } +// $ocSession['snappymail-uid'] = $aCredentials[0]; + \setcookie('snappymail-uid', $aCredentials[0]); if ($doLogin && $aCredentials[1] && $aCredentials[2]) { $oActions->Logger()->AddSecret($aCredentials[2]); $oAccount = $oActions->LoginProcess($aCredentials[1], $aCredentials[2], false); if ($oAccount) { - $ocSession['snappymail-uid'] = $aCredentials[0]; $oActions->Plugins()->RunHook('login.success', array($oAccount)); $oActions->SetAuthToken($oAccount); +// $this->logger->warning("Login {$aCredentials[0]}", ['app' => 'SnappyMail']); } } }