+++ /dev/null
-<?php
-
-namespace Wallabag\UserBundle\Controller;
-
-use FOS\UserBundle\Event\FilterUserResponseEvent;
-use FOS\UserBundle\Event\FormEvent;
-use FOS\UserBundle\Event\GetResponseUserEvent;
-use FOS\UserBundle\FOSUserEvents;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-
-class ResettingController extends \FOS\UserBundle\Controller\ResettingController
-{
- /**
- * Extends ResettingController to change the redirection after success.
- *
- * @param Request $request
- * @param $token
- *
- * @return null|RedirectResponse|\Symfony\Component\HttpFoundation\Response
- */
- 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');
-
- $user = $userManager->findUserByConfirmationToken($token);
-
- if (null === $user) {
- throw new NotFoundHttpException(sprintf('The user with "confirmation token" does not exist for value "%s"', $token));
- }
-
- $event = new GetResponseUserEvent($user, $request);
- $dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_INITIALIZE, $event);
-
- if (null !== $event->getResponse()) {
- return $event->getResponse();
- }
-
- $form = $formFactory->createForm();
- $form->setData($user);
-
- $form->handleRequest($request);
-
- if ($form->isValid()) {
- $event = new FormEvent($form, $request);
- $dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_SUCCESS, $event);
-
- $userManager->updateUser($user);
-
- if (null === $response = $event->getResponse()) {
- $this->get('session')->getFlashBag()->add(
- 'notice',
- 'Password updated'
- );
- $url = $this->generateUrl('homepage');
- $response = new RedirectResponse($url);
- }
-
- $dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
-
- return $response;
- }
-
- return $this->render('FOSUserBundle:Resetting:reset.html.twig', array(
- 'token' => $token,
- 'form' => $form->createView(),
- ));
- }
-}
--- /dev/null
+<?php
+
+namespace Wallabag\UserBundle\EventListener;
+
+use FOS\UserBundle\FOSUserEvents;
+use FOS\UserBundle\Event\FormEvent;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Symfony\Component\HttpFoundation\RedirectResponse;
+use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
+
+/**
+ * Listener responsible to change the redirection at the end of the password resetting
+ *
+ * @see http://symfony.com/doc/current/bundles/FOSUserBundle/controller_events.html
+ */
+class PasswordResettingListener implements EventSubscriberInterface
+{
+ private $router;
+
+ public function __construct(UrlGeneratorInterface $router)
+ {
+ $this->router = $router;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public static function getSubscribedEvents()
+ {
+ return array(
+ FOSUserEvents::RESETTING_RESET_SUCCESS => 'onPasswordResettingSuccess',
+ );
+ }
+
+ public function onPasswordResettingSuccess(FormEvent $event)
+ {
+ $url = $this->router->generate('homepage');
+
+ $event->setResponse(new RedirectResponse($url));
+ }
+}