Hallo zusammen,
ich muß für ein Projekt die Vergabe eines neuen Passworts an ein Member erweitern.
Wenn ich das korrekt nachgelesen habe, wird in modules/registration/ModulePassword.php "nur" die Längenvorgabe für ein neues Passwort geprüft.
Ich benötige hier aber noch weitere Prüfungen bzgl. Passwort-Komplexität, die bei Scheitern auch dem User kommuniziert werden müssen.
Ich habe mich gestern etwas duch die beteiligten Module gelesen und hätte gerne eure Meinung/Einschätzung zu meinem Ansatz (vielleicht denke ich ja auch zu kompliziert):
Um möglichst updatesicher zu sein, erstelle ich ein eigenes Modul, das ich unter
registriere. Über einer Erweiterung der Datenbank erstelle ich neue Felder wie z.B. eines in tl_member, dasPHP-Code:$GLOBALS['FE_MOD']['user']['lostPassword'] = 'MyExtendedModulePassword';
speichert, wann das Passwort zuletzt geändert wurde. Außerdem lege ich eine neue Tabelle mit der
Passworthistorie an
mit der ich ggf. prüfen kann, ob ein neues Passwort gültig ist, weil von diesem User noch nicht (oder "schon länger nicht") vergeben wurde.Code:id | userid | altes_pwd
Das oben registrierte MyExtendedModulePassword.php sieht dann in etwas so aus.
Alternative: die bestehende ModulePassword.php patchen und einen Hook einbauen (habe ich im Hook überhaupt Zugriff auf den User und das $this um Templatevariablen zu setzen und ggf. das Template zu wechseln?).PHP-Code:class MyExtendedModulePassword extends ModulePassword {
/**
* Set the new password
*/
protected function setNewPassword() {
// hier bestehenden Code dupliziert und eigene Erweiterungen eingetragen
// nicht elegant :-(
}
}
Der vorgesehene Hook aus $GLOBALS['TL_HOOKS']['setNewPassword'] hilft mir leider nicht weiter (?), da an dieser Stelle das neue Passwort ja bereits gesetzt ist.
Für die Ausgabe einer Meldung an den User, der ein neues Passwort vergeben will fällt mir (alternativ) ein, ein eigenes Widget in Anlehnung an system/modules/FormPassword.php zu implementieren. In dessen
könnten der Verifikationscode und die Meldungen an den User untergebracht werden.PHP-Code:protected function validator($varInput) { }
Dieses Widget wäre dann unter
zu registrieren? Das neue Widget hätte durchPHP-Code:$GLOBALS['TL_FFL']['password']
auch die Möglichkeit auf den User zuzugreifen und in die Datenbank zu schreiben?PHP-Code:Widget extends Controller extends System
Danke für eure Meinungen!

Zitieren
