Scheint wie ich eine Lösung gefunden. Nicht sicher, ob es das Beste ist, aber bis jetzt funktioniert es. Ich erkannte, dass processDatamap_preProcessFieldArray
ist, wo das Passwort immer noch im Klartext verfügbar ist, also muss ich es verwenden, um das Passwort zu speichern (später ist es bereits Hashed, daher unbrauchbar für mich) mit der Registrierung.
Die fieldArray-Werte in processDatamap_afterDatabaseOperations
werden nur gesetzt, wenn ein Wert geändert wurde, also durch Überprüfung, ob der Passwortschlüssel gesetzt wurde, weiß ich, ob das Passwort anfänglich geändert wurde oder nicht.
So ist das, was meine Lösung sieht so aus:
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);
}
}
bitte genauer sein, was Sie mit „geändert“ bedeuten! Geändert von was (früherer Wert)? und verändert wo? Wenn Sie $ id mit 'NEW' vergleichen, gehe ich davon aus, dass es sich um eine neue Erstellung von fe_users handelt, aber fe_users könnte auf mehrere Arten erstellt werden. von BE bis zu verschiedenen Erweiterungen in der FE, und jede FE-Erweiterung hat viele Optionen. –
Nein, es geht NICHT um neue Einträge, es ist, wenn jemand einen Benutzer im Backend bearbeitet - ich möchte nach dem Speichern sehen, ob das Passwort geändert wurde oder nicht. Hat der Redakteur das Passwort so belassen wie es war oder hat er ein neues eingegeben? – Chi