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);
}
を
一意のIDを生成し、これをテーブルuserに「password_key」のようなフィールドに格納する必要があります。ユーザーがそれをクリックすると、彼のpwd(電子メール、pwd、pwdの確認)をリセットするフォームを表示します。方法をリセットする際に、渡された一意のIDがこの特定のユーザーのデータベースにあるものであることを確認してください – Delphine
ありがとう、それは私を助けました! – Oudstand
歓迎します;) – Delphine