Ich versuche, ein Änderungskennwort in Symfony2 zusammenzustellen. Ich habe ein "aktuelles Passwort" -Feld, ein "neues Passwort" -Feld und ein "Bestätige neues Passwort" -Feld, und der Teil, auf den ich mich gerade konzentriere, überprüft das Feld "aktuelles Passwort".Überprüfen eines Passworts in Symfony2
(Übrigens, ich realisiere jetzt, dass Dinge wie FOSUserBundle
existieren, dass würde eine Menge dieser Dinge für mich kümmern, aber ich baute bereits mein Authentifizierungssystem basierend auf der offiziellen Symfony-Dokumentation, und ich habe nicht Zeit jetzt alle meine Authentifizierungscode zu wiederholen)
Was ich mir vor/gehofft, ich tun kann, ist eine Validierung Rückruf erstellen, die so etwas wie dies sagt.
// Entity/User.php
public function currentPasswordIsValid(ExecutionContext $context)
{
$currentPassword = $whatever; // whatever the user submitted as their current password
$factory = $this->get('security.encoder_factory'); // Getting the factory this way doesn't work in this context.
$encoder = $factory->getEncoder($this);
$encryptedCurrentPassword = $encoder->encodePassword($this->getPassword(), $this->getSalt());
if ($encyptedCurrentPassword != $this->getPassword() {
$context->addViolation('Current password is not valid', array(), null);
}
}
wie Sie meine Kommentare sehen , es gibt mindestens ein paar Gründe, warum der obige Code nicht funktioniert. Ich würde nur bestimmte Fragen zu diesen speziellen Themen stellen, aber vielleicht belle ich den falschen Baum überhaupt an. Deshalb stelle ich die Gesamtfrage.
Wie kann ich das Passwort eines Benutzers bestätigen?
Okay, danke. Aber was ist mit dem eigentlichen Passwort-Validierungsteil? Das war meine Frage. Ich weiß bereits, wie man einen benutzerdefinierten Validator erstellt und wie man Formularfelder erstellt. –
Ein Beispiel hinzugefügt. –
Super, danke. Ich werde es versuchen. –