Huston, у меня есть проблема :)Подтвердить старый пароль в Symfony 2 form
Мне нужно проверить старый пароль.
У Symfony встроенный модуль проверки паролей, это замечательно, но ... Мне нужно перенастроить систему кодирования.
use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert;
/**
* User
*/
class User implements AdvancedUserInterface, \Serializable
{
/**
* @SecurityAssert\UserPassword()
*/
protected $oldPassword;
Это возвращение всегда неверно, поскольку пароль зашифрован с помощью mcrypt.
Я попытался изменить этот класс
class UserPasswordValidator extends ConstraintValidator
{
private $tokenStorage;
private $encoderFactory;
public function __construct(TokenStorageInterface $tokenStorage, EncoderFactoryInterface $encoderFactory)
{
$this->tokenStorage = $tokenStorage;
$this->encoderFactory = $encoderFactory;
}
/**
* {@inheritdoc}
*/
public function validate($password, Constraint $constraint)
{
$user = $this->tokenStorage->getToken()->getUser();
$encoder = new CryptPasswordEncoder();
$oldPass = $user->getPassword();
if ($encoder->isPasswordValid($oldPass, $password, '')) {
$this->context->buildViolation($constraint->message)
->setParameter('%string%', $password)
->addViolation();
}
}
}
Но когда я Представлять подтверждено значение $ пароль всегда нулевой