Skip to content

Commit

Permalink
updating ResettingController
Browse files Browse the repository at this point in the history
  • Loading branch information
weaverryan committed Dec 18, 2017
1 parent bcbe7d1 commit 7c10a15
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 18 deletions.
40 changes: 26 additions & 14 deletions Controller/ResettingController.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@
use FOS\UserBundle\Event\FormEvent;
use FOS\UserBundle\Event\GetResponseNullableUserEvent;
use FOS\UserBundle\Event\GetResponseUserEvent;
use FOS\UserBundle\Form\Factory\FactoryInterface;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Mailer\MailerInterface;
use FOS\UserBundle\Model\UserInterface;
use FOS\UserBundle\Model\UserManagerInterface;
use FOS\UserBundle\Util\TokenGeneratorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
Expand All @@ -32,6 +35,21 @@
*/
class ResettingController extends Controller
{
private $eventDispatcher;
private $formFactory;
private $userManager;
private $tokenGenerator;
private $mailer;

public function __construct(EventDispatcherInterface $eventDispatcher, FactoryInterface $formFactory, UserManagerInterface $userManager, TokenGeneratorInterface $tokenGenerator, MailerInterface $mailer)
{
$this->eventDispatcher = $eventDispatcher;
$this->formFactory = $formFactory;
$this->userManager = $userManager;
$this->tokenGenerator = $tokenGenerator;
$this->mailer = $mailer;
}

/**
* Request reset user password: show form.
*/
Expand All @@ -52,9 +70,8 @@ public function sendEmailAction(Request $request)
$username = $request->request->get('username');

/** @var $user UserInterface */
$user = $this->get('fos_user.user_manager')->findUserByUsernameOrEmail($username);
/** @var $dispatcher EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
$user = $this->userManager->findUserByUsernameOrEmail($username);
$dispatcher = $this->eventDispatcher;

/* Dispatch init event */
$event = new GetResponseNullableUserEvent($user, $request);
Expand All @@ -75,9 +92,7 @@ public function sendEmailAction(Request $request)
}

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

/* Dispatch confirm event */
Expand All @@ -88,9 +103,9 @@ public function sendEmailAction(Request $request)
return $event->getResponse();
}

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

/* Dispatch completed event */
$event = new GetResponseUserEvent($user, $request);
Expand Down Expand Up @@ -135,12 +150,9 @@ public function checkEmailAction(Request $request)
*/
public function resetAction(Request $request, $token)
{
/** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
$formFactory = $this->get('fos_user.resetting.form.factory');
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->get('fos_user.user_manager');
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
$formFactory = $this->formFactory;
$userManager = $this->userManager;
$dispatcher = $this->eventDispatcher;

$user = $userManager->findUserByConfirmationToken($token);

Expand Down
7 changes: 7 additions & 0 deletions Resources/config/resetting.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@
<argument>%fos_user.resetting.token_ttl%</argument>
</service>

<service id="fos_user.resetting.controller" class="FOS\UserBundle\Controller\ResettingController" public="true">
<argument type="service" id="event_dispatcher" />
<argument type="service" id="fos_user.resetting.form.factory" />
<argument type="service" id="fos_user.user_manager" />
<argument type="service" id="fos_user.util.token_generator" />
<argument type="service" id="fos_user.mailer" />
</service>
</services>

</container>
8 changes: 4 additions & 4 deletions Resources/config/routing/resetting.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">

<route id="fos_user_resetting_request" path="/request" methods="GET">
<default key="_controller">FOSUserBundle:Resetting:request</default>
<default key="_controller">fos_user.resetting.controller:request</default>
</route>

<route id="fos_user_resetting_send_email" path="/send-email" methods="POST">
<default key="_controller">FOSUserBundle:Resetting:sendEmail</default>
<default key="_controller">fos_user.resetting.controller:sendEmail</default>
</route>

<route id="fos_user_resetting_check_email" path="/check-email" methods="GET">
<default key="_controller">FOSUserBundle:Resetting:checkEmail</default>
<default key="_controller">fos_user.resetting.controller:checkEmail</default>
</route>

<route id="fos_user_resetting_reset" path="/reset/{token}" methods="GET POST">
<default key="_controller">FOSUserBundle:Resetting:reset</default>
<default key="_controller">fos_user.resetting.controller:reset</default>
</route>

</routes>

1 comment on commit 7c10a15

@alex4102
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now my {{ render(controller('FOSUserBundle:Resetting:request')) }} not works because of construct function. Do you know how to embed the request form without duplicate it ?

Please sign in to comment.