Password-Validation in Symfony 1.2
Ich habe eben zum ersten mal ein Registrierungsformular für eine Anwendung im Symfony Framework geschrieben. So etwas kann man ja durchaus mal öfters gebrauchen daher stell ich die sfForm Klasse hier für alle zur Verfügung.
Übrigens der sfValidatorSchemaCompare funktioniert erst wenn die Felder darin mit einem Validator initiiert sind, da er ein globaler Validator ist (siehe in der Doku). In dem Beispiel werden die beiden Passwortfelder mit jeweils dem sfValidatorString und das erste noch mit dem sfValidatorRegex initiiert.
-
class RegistrationForm extends sfForm {
-
public function configure() {
-
‘username’ => new sfWidgetFormInput(),
-
‘password1′ => new sfWidgetFormInputPassword(),
-
‘password2′ => new sfWidgetFormInputPassword(),
-
‘email’ => new sfWidgetFormInput(),
-
));
-
-
‘max_length’ => 30,
-
‘required’ => true)),
-
‘email’ => new sfValidatorEmail(),
-
‘pattern’ => "/[[:upper:]+[:lower:]+[digit:]+/")),
-
‘min_length’ => 8)
-
))),
-
‘min_length’ => 8,
-
‘required’ => true)),
-
));
-
new sfValidatorSchemaCompare(‘password1′, ‘==’, ‘password2′),
-
‘model’ => ’sfGuardUser’,
-
‘column’ => ‘username’,
-
‘field’ => ‘username’))
-
)));
-
}
-
}
Mit dem RegEx Validator lässt sich dann schön überprüfen, ob das Passwort den eigenen Sicherheitsrichtlinien entspricht. Im Beispiel muss das Passwort mindestens ein Großbuchstabe, ein Kleinbuchstabe und eine Ziffer enthalten.
Für die Regulären Ausdrücke hier noch der Link zu einem Cheatsheet, falls noch nicht bekannt
Wenn jemand eine Adaption auf ältere Symfony Versionen versucht, dann muss er auf jeden Fall den Compare-Validator ändern in:
-
$this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare(‘password1′, sfValidatorSchemaCompare::EQUAL, ‘password2′));
Da Symfony 1.2 abwärtskompatibel in diesem Punkt ist, funktionieren dort beide Varianten.
Zum Schluss wird dann mit sfValidatorPropelUnique noch überprüft ob der Username bereits verwendet wird.
Jetzt werde ich dem ganzen noch die Verifikation der E-Mail mit einem Aktivierungsschlüssel verpassen, dazu näheres dann in einem weiteren Beitrag.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.











