ydForum: Registrierung
So, noch kurz die Registrierungsmöglichkeit einbauen...
Montag hatte ich zunächst die ydAuth-Klassen aufgeräumt und um ein paar Tests erweitert, um dann noch "schnell" die Registrierungsmöglichkeit einzubauen.
Users erweitert
Einfach ein Skript mit einem HTML-Formular, noch ein
paar Überprüfungen ergänzen und fertig. Ach ne, in der Users-Tabelle
wird ja noch kein Loginname und kein Passwort gespeichert. Also,
zunächst die Users-Tabelle plus Klasse ergänzt, dabei die Tests
erweitert etc.
Passwörter im Formular gleich?
Zur Sicherheit wird das Passwort im HTML-Formular wiederholt. Dazu
muss nun überprüft werden, ob die beiden Passwort-Eingaben identisch
sind. HTML::QuickForm bietet dafür doch was an. Ah,
compare. Hmm, wie werden da denn nun zwei Elemente für
angegeben. Ausprobier, geht nicht, in der Dokumentation such... Ah,
nicht schlecht - hätte ich auch so drauf kommen könnnen. Zwei per array()
statt nur einem per direkter Angabe:
$form->addRule('frmPassword2',
'Bitte Passwort wiederholen',
'required');
$form->addRule(array('frmPassword1', 'frmPassword2'),
'Die Passwörter müssen übereinstimmen',
'compare');
Doppelte Loginnamen erkennen
Jetzt noch ein Hinweis, falls der gewünschte Loginname schon vorhanden
ist. Eine findOne()-Methode ist schon in der Users-Klasse
vorhanden. Die war aber noch nicht flexible genug, um nur nach dem
Loginname zu suchen. Als zweites brauchte das Formular noch für
die Anzeige einen 'callback'-Aufruf. Da wußte ich ja mittlerweile
wo es in der Dokumentation zu finden ist:
$form->registerRule('checkdupelogin',
'callback',
'_ydForumUser_CheckDupeLogin');
$form->addRule('frmLoginName',
'Loginname existiert schon. Bitte versuchen Sie einen anderen.',
'checkdupelogin');
Ist leider erst mal nur als Funktionsaufruf drin, daher der lange
Name: _ydForumUser_CheckDupeLogin. Ich hoffe mal, dass
das auch irgendwie per Methoden-Aufruf geht.
Registrierung geht
Im Admin-Bereich ist dann noch eine Anzeige der registrierten User
hinzugekommen und das guest:guest-Login wurde durchs User-Login
ersetzt (war ja schon Sonntag fertig). Stunden später war die
Registrierungsmöglichkeit dann endlich fertig. Wird in den
nächsten Tagen online
gestellt. Womit die guest:guest-Version übersprungen wird.
