ChangePassword extensions use \SnappyMail\SensitiveString

This commit is contained in:
the-djmaze 2024-03-17 14:50:32 +01:00
parent 9427b36633
commit 8c033f53fa
13 changed files with 70 additions and 56 deletions

View file

@ -1,5 +1,7 @@
<?php
use SnappyMail\SensitiveString;
class ChangePasswordFroxlorDriver
{
const
@ -44,7 +46,7 @@ class ChangePasswordFroxlorDriver
);
}
public function ChangePassword(\RainLoop\Model\Account $oAccount, string $sPrevPassword, string $sNewPassword) : bool
public function ChangePassword(\RainLoop\Model\Account $oAccount, SensitiveString $oPrevPassword, SensitiveString $oNewPassword) : bool
{
if (!\RainLoop\Plugins\Helper::ValidateWildcardValues($oAccount->Email(), $this->oConfig->Get('plugin', 'froxlor_allowed_emails', ''))) {
return false;
@ -72,12 +74,12 @@ class ChangePasswordFroxlorDriver
if (!empty($aFetchResult['id'])) {
$sDbPassword = $aFetchResult['password_enc'];
$sDbSalt = \substr($sDbPassword, 0, \strrpos($sDbPassword, '$'));
if (\crypt($sPrevPassword, $sDbSalt) === $sDbPassword) {
if (\crypt($oPrevPassword, $sDbSalt) === $sDbPassword) {
$oStmt = $oPdo->prepare('UPDATE mail_users SET password_enc = ? WHERE id = ?');
return !!$oStmt->execute(array(
$this->cryptPassword($sNewPassword),
$this->cryptPassword($oNewPassword),
$aFetchResult['id']
));
}
@ -93,7 +95,7 @@ class ChangePasswordFroxlorDriver
return false;
}
private function cryptPassword(string $sPassword) : string
private function cryptPassword(SensitiveString $oPassword) : string
{
if (\defined('CRYPT_SHA512') && CRYPT_SHA512) {
$sSalt = '$6$rounds=5000$' . \bin2hex(\random_bytes(8)) . '$';
@ -102,6 +104,6 @@ class ChangePasswordFroxlorDriver
} else {
$sSalt = '$1$' . \bin2hex(\random_bytes(6)) . '$';
}
return \crypt($sPassword, $sSalt);
return \crypt($oPassword, $sSalt);
}
}