TYPO3 7.6 后端挂钩:检查 fe_users 密码是否已更改
TYPO3 7.6 Backend Hook: check if fe_users password was changed
是否有 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);
}
}
问题是,这总是 returns 密码,要么是新密码,要么是散列密码(如果已经存在),所以我不知道它是否已更改字段。有没有办法检查更改的字段?
看来我找到了解决办法。不确定它是否是最好的,但到目前为止它有效。我意识到,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);
}
}
是否有 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);
}
}
问题是,这总是 returns 密码,要么是新密码,要么是散列密码(如果已经存在),所以我不知道它是否已更改字段。有没有办法检查更改的字段?
看来我找到了解决办法。不确定它是否是最好的,但到目前为止它有效。我意识到,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);
}
}