2017-10-25 6 views
0

Symfony3 및 FOSUserBundle을 사용하고 있습니다.FOSUserBundle/Symfony3 : 변경하기 전에 현재 비밀번호를 확인하십시오.

내가 입력에 자신의 이전 암호를하도록 요청하고 원하는 새 암호를 새로운 오전

. 그들은 이미 로그인 할 때 내 사용자가 자신의 암호를 변경할 수 있습니다 작업을 만들기 위해 노력하고 내가 원하는 현재 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; 
    } 

답변