是否有TYPO3后端挂钩来检查fe_users
密码是否已更改?我试过这个:
public function processDatamap_preProcessFieldArray(array &$fieldArray, $table, $id, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {
if ($table === "fe_users" && stripos($id, 'NEW') === false){
$pw = $fieldArray['password'];
die($pw);
}
}
问题是,这总是会返回一个密码,无论是新密码还是哈希密码(如果它已经存在),所以我不知道它是否是一个更改过的字段。有没有办法检查更改的字段?
答案 0 :(得分:0)
好像我找到了解决方案。不确定它是否是最好的,但到目前为止它的工作原理。我意识到,processDatamap_preProcessFieldArray
是密码仍然以纯文本形式提供的地方,所以我需要使用它来存储密码(以后它已经被哈希,因此对我来说无法使用)。
processDatamap_afterDatabaseOperations
中的fieldArray值仅在更改值时设置,因此通过检查密码密钥是否已设置,我知道密码是否最初更改。
所以这就是我的解决方案:
public function processDatamap_afterDatabaseOperations($status, $table, $id, $fieldArray, $pObj) {
if ($table === "fe_users" && $status === "update" && isset($fieldArray['password'])) {
//get the password
$registry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Registry');
$pw = $registry->get('be', 'lastPassword');
//do whatever is necessary with the plain text password...
//remove it
$registry->remove('be', 'lastPassword');
}
}
public function processDatamap_preProcessFieldArray(array &$fieldArray, $table, $id, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {
if ($table === "fe_users" && stripos($id, 'NEW') === false){
$pw = $fieldArray['password'];
$registry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Registry');
$registry->set('be', 'lastPassword', $pw);
}
}