私はSymfony3とFOSUserBundleを使用しています。FOSUserBundle/Symfony3:変更する前に現在のパスワードを確認してください
私は入力に自分の古いパスワードをそれらを尋ねるとNEW任意のパスワードを新しいです
。彼らはすでにログインしているとき、私のユーザーが自分のパスワードを変更することができますアクションを作成しようとしていますし、私がしたいです現在OLDパスワードが現在記録されているパスワードと同じであることを確認します。
奇妙な理由から、エンコーダは間違ったハッシュを返し続けます。私はここで間違って何をしていますか?
$user = $this->getUser();
$newPasswordPlain = 'newpassword';
$currentPasswordForValidation = 'test';
$encoder_service = $this->get('security.encoder_factory');
$encoder = $encoder_service->getEncoder($user);
$encodedPassword = $encoder->encodePassword($currentPasswordForValidation, $user->getSalt());
var_dump($encodedPassword);
var_dump($user->getPassword());
if ($user->getPassword() == $encodedPassword) {
$userManager = $this->container->get('fos_user.user_manager');
$user->setPlainPassword($newPasswordPlain);
$userManager->updateUser($user, true);
} else {
var_dump('error: not the same password'); exit;
}