Я пытаюсь создать функцию изменения пароля в Symfony2. У меня есть поле «текущий пароль», поле «новый пароль» и поле «подтвердить новый пароль», а часть, на которой я сейчас сосредоточен, проверяет поле «текущий пароль».Проверка пароля в Symfony2
(Кстати, теперь я понимаю, что существуют такие вещи, как FOSUserBundle
, которые позаботятся о многом для меня, но я уже построил свою систему аутентификации на основе официальной документации Symfony, и у меня нет время прямо сейчас, чтобы переделать все мой код аутентификации)
что я воображал/надеюсь, что я могу сделать, это создать обратный вызов проверки, что говорит что-то вроде этого:.
// 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);
}
}
Как вы можете видеть в моих комментариях , есть по крайней мере несколько причин, почему приведенный выше код не работает. Я бы просто задал конкретные вопросы по этим конкретным вопросам, но, может быть, я вообще лаю по неправильному дереву. Вот почему я задаю общий вопрос.
Итак, как я могу проверить пароль пользователя?
Хорошо, спасибо. Но как насчет фактической части проверки пароля? Это то, о чем я спрашивал. Я уже знаю, как создать пользовательский валидатор и как создать поля формы. –
Добавлен пример. –
Удивительный, спасибо. Я попробую. –