2017-03-14 6 views
1

Gibt es einen TYPO3 Backend Hook um zu überprüfen, ob das Passwort geändert wurde? Ich versuchte dies:TYPO3 7.6 Backend Hook: Prüfe, ob fe_users Passwort geändert wurde

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); 
    } 
} 

Das Problem ist, das gibt immer ein Passwort, entweder die neuen oder ein gehasht ein, wenn es bereits existiert, so würde ich nicht wissen, ob ich eine geänderte Feld oder nicht. Gibt es eine Möglichkeit, nach geänderten Feldern zu suchen?

+0

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. –

+0

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

Antwort

0

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); 
    } 
} 
Verwandte Themen