From 46bd6d4564fce9bc0c1714a8b376723ed37aff24 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Fri, 15 Mar 2024 00:53:30 +0100 Subject: [PATCH] Nextcloud changed stored password handling --- .../snappymail/lib/Controller/FetchController.php | 2 +- .../snappymail/lib/Settings/PersonalSettings.php | 8 ++++++-- .../nextcloud/snappymail/lib/Util/SnappyMailHelper.php | 8 ++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/integrations/nextcloud/snappymail/lib/Controller/FetchController.php b/integrations/nextcloud/snappymail/lib/Controller/FetchController.php index 06dff2f10..0baa2a4df 100644 --- a/integrations/nextcloud/snappymail/lib/Controller/FetchController.php +++ b/integrations/nextcloud/snappymail/lib/Controller/FetchController.php @@ -103,7 +103,7 @@ class FetchController extends Controller { $sPass = $_POST['snappymail-password']; if ('******' !== $sPass) { - $this->config->setUserValue($sUser, 'snappymail', 'snappymail-password', + $this->config->setUserValue($sUser, 'snappymail', 'passphrase', $sPass ? SnappyMailHelper::encodePassword($sPass, \md5($sEmail)) : ''); } } else { diff --git a/integrations/nextcloud/snappymail/lib/Settings/PersonalSettings.php b/integrations/nextcloud/snappymail/lib/Settings/PersonalSettings.php index 22211e659..dcfcd1453 100644 --- a/integrations/nextcloud/snappymail/lib/Settings/PersonalSettings.php +++ b/integrations/nextcloud/snappymail/lib/Settings/PersonalSettings.php @@ -24,15 +24,19 @@ class PersonalSettings implements ISettings $sEmail = $aRainLoop[0]; $this->config->setUserValue($uid, 'snappymail', 'snappymail-email', $sEmail); if ($aRainLoop[1]) { - $this->config->setUserValue($uid, 'snappymail', 'snappymail-password', + $this->config->setUserValue($uid, 'snappymail', 'passphrase', \OCA\SnappyMail\Util\SnappyMailHelper::encodePassword($aRainLoop[1], \md5($sEmail)) ); } } } + if ($sPass = $this->config->getUserValue($uid, 'snappymail', 'snappymail-password')) { + $this->config->deleteUserValue($uid, 'snappymail', 'snappymail-password'); + $this->config->setUserValue($uid, 'snappymail', 'passphrase', $sPass); + } $parameters = [ 'snappymail-email' => $sEmail, - 'snappymail-password' => $this->config->getUserValue($uid, 'snappymail', 'snappymail-password') ? '******' : '' + 'snappymail-password' => $this->config->getUserValue($uid, 'snappymail', 'passphrase') ? '******' : '' ]; \OCP\Util::addScript('snappymail', 'snappymail'); return new TemplateResponse('snappymail', 'personal_settings', $parameters, ''); diff --git a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php index 146dd0bfa..7d6016747 100644 --- a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php +++ b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php @@ -106,7 +106,8 @@ class SnappyMailHelper // Login failure, reset password to prevent more attempts $sUID = \OC::$server->getUserSession()->getUser()->getUID(); \OC::$server->getSession()['snappymail-passphrase'] = ''; - \OC::$server->getConfig()->setUserValue($sUID, 'snappymail', 'snappymail-password', ''); + \OC::$server->getConfig()->setUserValue($sUID, 'snappymail', 'passphrase', ''); + \SnappyMail\Log::error('Nextcloud', $e->getMessage()); } } } @@ -132,11 +133,14 @@ class SnappyMailHelper // If the user has set credentials for SnappyMail in their personal settings, // this has the first priority. $sEmail = $config->getUserValue($sUID, 'snappymail', 'snappymail-email'); - $sPassword = $config->getUserValue($sUID, 'snappymail', 'snappymail-password'); + $sPassword = $config->getUserValue($sUID, 'snappymail', 'passphrase') + ?: $config->getUserValue($sUID, 'snappymail', 'snappymail-password'); if ($sEmail && $sPassword) { $sPassword = static::decodePassword($sPassword, \md5($sEmail)); if ($sPassword) { return [$sUID, $sEmail, $sPassword]; + } else { + \SnappyMail\Log::debug('Nextcloud', 'decodePassword failed for getUserValue'); } }