Skip to content
This repository has been archived by the owner on Dec 27, 2023. It is now read-only.

Commit

Permalink
fix(Tinebase/User/Plugin): fix function interface inspectSetPassword
Browse files Browse the repository at this point in the history
... needs to be the same in all user plugins
  • Loading branch information
pschuele committed Oct 21, 2022
1 parent 090ad4f commit 6f554dd
Show file tree
Hide file tree
Showing 13 changed files with 111 additions and 85 deletions.
11 changes: 7 additions & 4 deletions tine20/Addressbook/Controller/Contact.php
Expand Up @@ -1363,11 +1363,14 @@ public function inspectDeleteUser(Tinebase_Model_FullUser $_user)
/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = TRUE)
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
}

Expand Down
2 changes: 1 addition & 1 deletion tine20/Felamimail/Controller/Account.php
Expand Up @@ -819,7 +819,7 @@ protected function _beforeUpdateSharedAccount($_record, $_oldRecord)
// always set defined username
$_record->user = $emailUserBackend->getLoginName($user->getId(), $_record->email, $_record->email);
$this->_beforeUpdateSharedAccountCredentials($_record, $_oldRecord);
Tinebase_EmailUser::getInstance(Tinebase_Config::IMAP)->inspectSetPassword($user->getId(), $_record->password);
Tinebase_EmailUser::getInstance()->inspectSetPassword($user->getId(), $_record->password);
$this->_autoCreateSystemAccountFolders($_record);
}
}
Expand Down
13 changes: 8 additions & 5 deletions tine20/Tinebase/EmailUser/Imap/Cyrus.php
Expand Up @@ -148,12 +148,15 @@ public function inspectGetUserByProperty(Tinebase_Model_User $_user)

/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = TRUE)
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
// nothing to be done for cyrus imap server
}
Expand Down
15 changes: 9 additions & 6 deletions tine20/Tinebase/EmailUser/Imap/Dbmail.php
Expand Up @@ -198,15 +198,18 @@ public function inspectGetUserByProperty(Tinebase_Model_User $_user)
$_user->imapUser = $emailUser;
$_user->emailUser = Tinebase_EmailUser::merge(clone $_user->imapUser, isset($_user->emailUser) ? $_user->emailUser : null);
}

/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = TRUE)
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
if (! $_encrypt && preg_match('/\{(.*)\}(.*)/', $_password, $matches)) {
// if password should not be encrypted but already contains encryption type, we separate pw and type
Expand Down
15 changes: 9 additions & 6 deletions tine20/Tinebase/EmailUser/Imap/Standard.php
Expand Up @@ -71,15 +71,18 @@ public function inspectGetUserByProperty(Tinebase_Model_User $_user)
$_user->emailUser = Tinebase_EmailUser::merge(clone $_user->imapUser, $_user->emailUser);
}
}

/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = TRUE)
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
// do nothing
}
Expand Down
15 changes: 9 additions & 6 deletions tine20/Tinebase/EmailUser/Smtp/Standard.php
Expand Up @@ -71,15 +71,18 @@ public function inspectGetUserByProperty(Tinebase_Model_User $_user)
$_user->emailUser = Tinebase_EmailUser::merge(clone $_user->imapUser, $_user->emailUser);
}
}

/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = TRUE)
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
// do nothing
}
Expand Down
17 changes: 10 additions & 7 deletions tine20/Tinebase/EmailUser/Sql.php
Expand Up @@ -273,15 +273,18 @@ public function inspectGetUserByProperty(Tinebase_Model_User $_user)
$_user->emailUser = Tinebase_EmailUser::merge(clone $_user->imapUser, $_user->emailUser);
}
}

/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = TRUE)
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
if (!isset($this->_propertyMapping['emailPassword'])) {
return;
Expand Down
19 changes: 10 additions & 9 deletions tine20/Tinebase/User/LdapPlugin/Interface.php
Expand Up @@ -56,17 +56,18 @@ public function inspectExpiryDate($_expiryDate, array &$_ldapData);
* @param array $_ldapData the data to be written to ldap
*/
public function inspectStatus($_status, array &$_ldapData);

/**
* inspect set password
*
* @param string $_userId
* @param string $_password
* @param boolean $_encrypt
* @param boolean $_mustChange
* @param array $_ldapData the data to be written to ldap
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt, $_mustChange, array &$_ldapData);
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = []);

/**
* inspect get user by property
Expand Down
11 changes: 7 additions & 4 deletions tine20/Tinebase/User/Plugin/Abstract.php
Expand Up @@ -97,11 +97,14 @@ public function inspectGetUserByProperty(Tinebase_Model_User $_user)
/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = true)
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
// do nothing here - implement in plugin if needed
}
Expand Down
19 changes: 10 additions & 9 deletions tine20/Tinebase/User/Plugin/LdapInterface.php
Expand Up @@ -32,17 +32,18 @@ public function inspectAddUser(Tinebase_Model_FullUser $_user, array &$_ldapData
* @param array $_ldapEntry
*/
public function inspectGetUserByProperty(Tinebase_Model_User $_user, array &$_ldapEntry);

/**
* inspect set password
*
* @param string $_userId
* @param string $_password
* @param boolean $_encrypt
* @param boolean $_mustChange
* @param array $_ldapData the data to be written to ldap
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt, $_mustChange, array &$_ldapData);
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = []);

/**
* inspect data used to update user
Expand Down
42 changes: 21 additions & 21 deletions tine20/Tinebase/User/Plugin/Samba.php
Expand Up @@ -95,45 +95,45 @@ public function inspectStatus($_status, array &$_ldapData)

$_ldapData['sambaacctflags'] = $acctFlags;
}

/**
* inspect set password
*
* @param string $_userId
* @param string $_password
* @param boolean $_encrypt
* @param boolean $_mustChange
* @param array $_ldapData the data to be written to ldap
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = true, $_mustChange = false, array &$_ldapData = [])
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = [])
{
if ($_encrypt !== true) {
Tinebase_Core::getLogger()->crit(__METHOD__ . '::' . __LINE__
. ' can not transform crypted password into nt/lm samba password. Make sure to reset password for user ' . $_userId);
} else {
$_ldapData['sambantpassword'] = Tinebase_User_Abstract::encryptPassword($_password, Tinebase_User_Abstract::ENCRYPT_NTPASSWORD);
$_ldapData['sambalmpassword'] = array();
$_additionalData['sambantpassword'] = Tinebase_User_Abstract::encryptPassword($_password, Tinebase_User_Abstract::ENCRYPT_NTPASSWORD);
$_additionalData['sambalmpassword'] = array();

if ($_mustChange === true) {
$_ldapData['sambapwdmustchange'] = '1';
$_ldapData['sambapwdcanchange'] = '1';
$_ldapData['sambapwdlastset'] = array();
$_additionalData['sambapwdmustchange'] = '1';
$_additionalData['sambapwdcanchange'] = '1';
$_additionalData['sambapwdlastset'] = array();

} else if ($_mustChange === false) {
$_ldapData['sambapwdmustchange'] = '2147483647';
$_ldapData['sambapwdcanchange'] = '1';
$_ldapData['sambapwdlastset'] = Tinebase_DateTime::now()->getTimestamp();
$_additionalData['sambapwdmustchange'] = '2147483647';
$_additionalData['sambapwdcanchange'] = '1';
$_additionalData['sambapwdlastset'] = Tinebase_DateTime::now()->getTimestamp();

} else if ($_mustChange === null &&
$_userId instanceof Tinebase_Model_FullUser &&
isset($_userId->sambaSAM) &&
isset($_userId->sambaSAM->pwdMustChange) &&
isset($_userId->sambaSAM->pwdCanChange)) {

$_ldapData['sambapwdmustchange'] = $_userId->sambaSAM->pwdMustChange->getTimestamp();
$_ldapData['sambapwdcanchange'] = $_userId->sambaSAM->pwdCanChange->getTimestamp();
$_ldapData['sambapwdlastset'] = array();

$_additionalData['sambapwdmustchange'] = $_userId->sambaSAM->pwdMustChange->getTimestamp();
$_additionalData['sambapwdcanchange'] = $_userId->sambaSAM->pwdCanChange->getTimestamp();
$_additionalData['sambapwdlastset'] = array();
}
}
}
Expand Down
15 changes: 9 additions & 6 deletions tine20/Tinebase/User/Plugin/SqlInterface.php
Expand Up @@ -39,15 +39,18 @@ public function inspectGetUserByProperty(Tinebase_Model_User $_user);
* @param Tinebase_Model_FullUser $_newUserProperties
*/
public function inspectUpdateUser(Tinebase_Model_FullUser $_updatedUser, Tinebase_Model_FullUser $_newUserProperties);

/**
* update/set email user password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt encrypt password
*
* @param string $_userId
* @param string $_password
* @param bool $_encrypt
* @param bool $_mustChange
* @param array $_additionalData
* @return void
*/
public function inspectSetPassword($_userId, $_password, $_encrypt = TRUE);
public function inspectSetPassword($_userId, string $_password, bool $_encrypt = true, bool $_mustChange = false, array &$_additionalData = []);

/**
* delete user by id
Expand Down
2 changes: 1 addition & 1 deletion tine20/Tinebase/User/Sql.php
Expand Up @@ -580,7 +580,7 @@ public function updateNtlmV2Hash($_userId, $_password)
* @param bool $encrypt encrypt password
* @throws Tinebase_Exception_Backend
*/
protected function _setPluginsPassword(Tinebase_Model_User $user, $password, $encrypt = TRUE)
protected function _setPluginsPassword(Tinebase_Model_User $user, $password, $encrypt = true)
{
foreach ($this->_sqlPlugins as $plugin) {
try {
Expand Down

0 comments on commit 6f554dd

Please sign in to comment.