2016-10-25 6 views
-1

내가 Symfony 3REST API를 개발하고와 비밀번호를 재설정 FOSUserBundle. 이제 비밀번호를 재설정 할 수있는 링크를 사용자에게 보내려고합니다. 다음과 같이 요청을 보내야합니다.Symonfy 3 - REST API를

"/resetpassword/{userEmail}" 

비밀번호를 재설정하려면 어떻게해야합니까? 나는 지금 내 자신으로 이메일을 보내는 방법을 모두 알았지 만이 링크를 생성하는 방법이나 링크를 처리하는 방법은 아닙니다.

+0

고유 ID를 생성해야하며이를 테이블 사용자의 "password_key"와 같은 필드에 저장하십시오. 사용자가 그것을 클릭하면 자신의 친구 (이메일, 친구, 친구 확인)를 재설정하는 양식을 표시합니다. 방법 재설정에서 전달 된 고유 ID가이 특정 사용자의 데이터베이스에 있는지 확인하십시오 – Delphine

+0

감사합니다. – Oudstand

+0

당신을 환영합니다;) – Delphine

답변

5

FOSUserBundle에는 이미 필요한 모든 기능이 있습니다.

1) 요청 이메일에서 사용자를 찾을 수는
2) 이미 새 비밀번호
3) 4) 이메일 메시지
을 다시 보내는 FOSUserBundle 메일러 구현을 사용하는 사용자
에 대한 확인 토큰을 생성을 요청하지 그 현재 사용자를 확인 5) 업데이트 사용자
6) 반환 응답이 같은 것을 할 수

:

/** 
    * @Route("/resetpassword/{userEmail}", name="user_password_reset-request") 
    * @Method("GET") 
    */ 
    public function resetPasswordRequestAction(Request $request) 
    { 
     $email = $request->query->get('userEmail'); 
     $user = $this->get('fos_user.user_manager')->findUserByEmail($email); 
     if (null === $user) { 
      throw $this->createNotFoundException(); 
     } 

     if ($user->isPasswordRequestNonExpired($this->container->getParameter('fos_user.resetting.token_ttl'))) { 
      throw new BadRequestHttpException('Password request alerady requested'); 
     } 

     if (null === $user->getConfirmationToken()) { 
      /** @var $tokenGenerator \FOS\UserBundle\Util\TokenGeneratorInterface */ 
      $tokenGenerator = $this->get('fos_user.util.token_generator'); 
      $user->setConfirmationToken($tokenGenerator->generateToken()); 
     } 

     $this->get('fos_user.mailer')->sendResettingEmailMessage($user); 
     $user->setPasswordRequestedAt(new \DateTime()); 
     $this->get('fos_user.user_manager')->updateUser($user); 

     return new Response(Response::HTTP_OK); 
    }