我试图创建一个表单来注册新用户,而不需要定义他们的密码。这个想法是保存新用户,然后通过fos用户包中的重置密码过程要求更改密码。请求用不同的控制器重置密码与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);
为什么不只是一个临时随机产生密码的连接,然后将新用户到数据库因为您可能希望在用户注册后第一次发送不同的文本,而不是在密码重置后发送电子邮件给用户。 –
当然,我可以自己做所有的事情,但我最终会发送一封电子邮件,最终链接到fos用户的重置密码操作。我可能是错的,但是直接调用fos用户包(最终在别的地方最终使用一些自定义模板或重写控制器)并不是一个更好的方法,并让它按照它的设计处理工作? –
编号注册从来不是一个密码重置在我看来。但是如果可能的话,你仍然可以使用这个包的一部分。 –