diff --git a/integrations/nextcloud/snappymail/lib/AppInfo/Application.php b/integrations/nextcloud/snappymail/lib/AppInfo/Application.php index 0b040139c..df40033cf 100644 --- a/integrations/nextcloud/snappymail/lib/AppInfo/Application.php +++ b/integrations/nextcloud/snappymail/lib/AppInfo/Application.php @@ -75,20 +75,24 @@ class Application extends App implements IBootstrap $dispatcher = $context->getAppContainer()->query('OCP\EventDispatcher\IEventDispatcher'); $dispatcher->addListener(PostLoginEvent::class, function (PostLoginEvent $Event) { +/* $config = \OC::$server->getConfig(); // Only store the user's password in the current session if they have // enabled auto-login using Nextcloud username or email address. if ($config->getAppValue('snappymail', 'snappymail-autologin', false) || $config->getAppValue('snappymail', 'snappymail-autologin-with-email', false)) { +*/ $sUID = $Event->getUser()->getUID(); \OC::$server->getSession()['snappymail-nc-uid'] = $sUID; - \OC::$server->getSession()['snappymail-password'] = SnappyMailHelper::encodePassword($Event->getPassword(), $sUID); + \OC::$server->getSession()['snappymail-passphrase'] = SnappyMailHelper::encodePassword($Event->getPassword(), $sUID); +/* } +*/ }); $dispatcher->addListener(BeforeUserLoggedOutEvent::class, function (BeforeUserLoggedOutEvent $Event) { // https://github.com/nextcloud/server/issues/36083#issuecomment-1387370634 -// \OC::$server->getSession()['snappymail-password'] = ''; +// \OC::$server->getSession()['snappymail-passphrase'] = ''; SnappyMailHelper::loadApp(); // \RainLoop\Api::Actions()->Logout(true); \RainLoop\Api::Actions()->DoLogout(); @@ -99,12 +103,12 @@ class Application extends App implements IBootstrap $class = 'OCA\Impersonate\Events\BeginImpersonateEvent'; if (\class_exists($class)) { $dispatcher->addListener($class, function ($Event) { - \OC::$server->getSession()['snappymail-password'] = ''; + \OC::$server->getSession()['snappymail-passphrase'] = ''; SnappyMailHelper::loadApp(); \RainLoop\Api::Actions()->Logout(true); }); $dispatcher->addListener('OCA\Impersonate\Events\EndImpersonateEvent', function ($Event) { - \OC::$server->getSession()['snappymail-password'] = ''; + \OC::$server->getSession()['snappymail-passphrase'] = ''; SnappyMailHelper::loadApp(); \RainLoop\Api::Actions()->Logout(true); }); diff --git a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php index 1eef819ad..bb2673f7f 100644 --- a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php +++ b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php @@ -105,7 +105,7 @@ class SnappyMailHelper } catch (\Throwable $e) { // Login failure, reset password to prevent more attempts $sUID = \OC::$server->getUserSession()->getUser()->getUID(); - \OC::$server->getSession()['snappymail-password'] = ''; + \OC::$server->getSession()['snappymail-passphrase'] = ''; \OC::$server->getConfig()->setUserValue($sUID, 'snappymail', 'snappymail-password', ''); } } @@ -165,16 +165,18 @@ class SnappyMailHelper $sPassword = ''; if ($config->getAppValue('snappymail', 'snappymail-autologin', false)) { $sEmail = $sUID; - $sPassword = $ocSession['snappymail-password']; + $sPassword = $ocSession['snappymail-passphrase']; } else if ($config->getAppValue('snappymail', 'snappymail-autologin-with-email', false)) { $sEmail = $config->getUserValue($sUID, 'settings', 'email'); - $sPassword = $ocSession['snappymail-password']; + $sPassword = $ocSession['snappymail-passphrase']; } else { \SnappyMail\Log::debug('Nextcloud', 'snappymail-autologin is off'); } if ($sPassword) { return [$sUID, $sEmail, static::decodePassword($sPassword, $sUID)]; } + } else { + \SnappyMail\Log::debug('Nextcloud', "snappymail-nc-uid mismatch '{$ocSession['snappymail-nc-uid']}' != '{$sUID}'"); } return [$sUID, '', '']; diff --git a/plugins/nextcloud/index.php b/plugins/nextcloud/index.php index 4b0f5d991..080018baf 100644 --- a/plugins/nextcloud/index.php +++ b/plugins/nextcloud/index.php @@ -250,8 +250,13 @@ class NextcloudPlugin extends \RainLoop\Plugins\AbstractPlugin $aResult['ContactsSync']['User'] = $sUID; $bSave = true; } - if (empty($aResult['ContactsSync']['Password'])) { - $aResult['ContactsSync']['Password'] = ''; + $pass = \OC::$server->getSession()['snappymail-passphrase']; + if ($pass/* && empty($aResult['ContactsSync']['Password'])*/) { + $pass = \SnappyMail\Crypt::DecryptUrlSafe($pass, $sUID); + if ($pass) { + $aResult['ContactsSync']['Password'] = $pass; + $bSave = true; + } } if ($bSave) { $oActions = \RainLoop\Api::Actions();