mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-03 14:37:02 +03:00
ChangePassword extensions use \SnappyMail\SensitiveString
This commit is contained in:
parent
9427b36633
commit
8c033f53fa
13 changed files with 70 additions and 56 deletions
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use SnappyMail\SensitiveString;
|
||||
|
||||
class ChangePasswordDriverLDAP
|
||||
{
|
||||
const
|
||||
|
|
@ -55,7 +57,7 @@ class ChangePasswordDriverLDAP
|
|||
);
|
||||
}
|
||||
|
||||
public function ChangePassword(\RainLoop\Model\Account $oAccount, string $sPrevPassword, string $sNewPassword) : bool
|
||||
public function ChangePassword(\RainLoop\Model\Account $oAccount, SensitiveString $oPrevPassword, SensitiveString $oNewPassword) : bool
|
||||
{
|
||||
$sDomain = \MailSo\Base\Utils::getEmailAddressDomain($oAccount->Email());
|
||||
$sUserDn = \strtr($this->sUserDnFormat, array(
|
||||
|
|
@ -89,25 +91,25 @@ class ChangePasswordDriverLDAP
|
|||
throw new \Exception('ldap_start_tls error '.\ldap_errno($oCon).': '.\ldap_error($oCon));
|
||||
}
|
||||
|
||||
if (!\ldap_bind($oCon, $sUserDn, $sPrevPassword)) {
|
||||
if (!\ldap_bind($oCon, $sUserDn, $oPrevPassword)) {
|
||||
throw new \Exception('ldap_bind error '.\ldap_errno($oCon).': '.\ldap_error($oCon));
|
||||
}
|
||||
|
||||
$sSshaSalt = '';
|
||||
$sPrefix = '{'.\strtoupper($this->sPasswordEncType).'}';
|
||||
$sEncodedNewPassword = $sNewPassword;
|
||||
$sEncodedNewPassword = $oNewPassword;
|
||||
switch ($sPrefix)
|
||||
{
|
||||
case '{SSHA}':
|
||||
$sSshaSalt = $this->getSalt(4);
|
||||
case '{SHA}':
|
||||
$sEncodedNewPassword = $sPrefix.\base64_encode(\hash('sha1', $sNewPassword.$sSshaSalt, true).$sSshaSalt);
|
||||
$sEncodedNewPassword = $sPrefix.\base64_encode(\hash('sha1', $oNewPassword.$sSshaSalt, true).$sSshaSalt);
|
||||
break;
|
||||
case '{MD5}':
|
||||
$sEncodedNewPassword = $sPrefix.\base64_encode(\md5($sNewPassword, true));
|
||||
$sEncodedNewPassword = $sPrefix.\base64_encode(\md5($oNewPassword, true));
|
||||
break;
|
||||
case '{CRYPT}':
|
||||
$sEncodedNewPassword = $sPrefix.\crypt($sNewPassword, $this->getSalt(2));
|
||||
$sEncodedNewPassword = $sPrefix.\crypt($oNewPassword, $this->getSalt(2));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue