2017-01-02 5 views
1

パスワードを定義せずに新規ユーザを登録するためのフォームを作成しようとしています。新しいユーザーを保存してから、fos user bundleからパスワードのリセット手順を実行してパスワードを変更するように求められます。fosユーザバンドルを使用して別のコントローラからパスワードをリセットするリクエスト

コントローラのパスワードをリセットする手順をどのように起動できるかわかりません。ここで

は私のコントローラの提出一部です:

が、これは自分のパスワードを変更するよう求めて新しく作成したユーザーに電子メールを送信することが想定されていないです:コードにコメントしたよう

if ($request->getMethod() === 'POST') { 

     $form->bind($request); 
     if ($form->isValid()) { 

      $tokenGenerator = $this->get('fos_user.util.token_generator'); 
      $password = substr($tokenGenerator->generateToken(), 0, 8); 

      $user->setEnabled(false); 
      $user->setPlainPassword($password); 

      /** @var $dispatcher EventDispatcherInterface */ 
      $dispatcher = $this->container->get('event_dispatcher'); 
      $event = new GetResponseUserEvent($user, $request); 

      $userManager->updatePassword($user); 
      $userManager->updateUser($user); 

      $em->persist($user); 
      $em->flush(); 

      // Is this isn't supposed to send an email to the newly created user asking to change his password ? 
      $dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_REQUEST, $event); 

      return new RedirectResponse($this->generateUrl('some_url')); 
     } 
    } 

$dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_REQUEST, $event); 
+1

で新しいパスワードを設定し、この方法で解決できますパスワードをリセットした後ではなく、ユーザー登録後に最初に別のテキストを送信する場合があるため、ユーザーに電子メールを送信してください。 –

+0

確かに私は自分ですべてのものをやることができますが、最終的にfosユーザーのパスワードリセットアクションにリンクする電子メールを送信してしまいます。私は間違っているかもしれませんが、direcly fosユーザーバンドル(最終的にいくつかのカスタムテンプレートまたは他の場所でコントローラをオーバーライドして)を呼び出し、それが設計されているように仕事を処理させるようにするのは良い選択肢ではありませんか? –

+0

いいえ、私の意見では登録は決してパスワードリセットされません。しかし、可能であれば、バンドルの一部を引き続き使用することができます。 –

答えて

1

多分それはあなたが私はそれを

はなぜちょうどその途中、一時的にランダムに作成したパスワードを使用してデータベースに新しいユーザを挿入していないのUserManager

$userManager = $this->get('fos_user.user_manager'); 
$entity->setPlainPassword("123");      
$userManager->updateUser($entity); 
+0

私はすでに提供しているコードでこれをやっています。これは私が達成しようとしていることではありません。私がやろうとしているのは、何らかの「パスワードをリセットする必要がある」状態の新しいユーザーを作成することです。私はすでにランダムなパスワードを設定していますが、fosユーザバンドルがこの "状態"を提供し、残りのアクションを処理することができます。 –

+0

hmnまた、ユーザーがログインできるリンクでrandompasswordを送信するだけでなく、上記のコードを使用してパスワードを変更するフォームを持つ以外のオプションは表示されません –

関連する問題