]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | ||
3 | namespace Wallabag\UserBundle\Controller; | |
4 | ||
5 | use FOS\UserBundle\FOSUserEvents; | |
6 | use FOS\UserBundle\Event\FormEvent; | |
7 | use FOS\UserBundle\Event\GetResponseUserEvent; | |
8 | use FOS\UserBundle\Event\FilterUserResponseEvent; | |
9 | use Symfony\Component\HttpFoundation\Request; | |
10 | use Symfony\Component\HttpFoundation\RedirectResponse; | |
11 | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | |
12 | ||
13 | class ResettingController extends \FOS\UserBundle\Controller\ResettingController | |
14 | { | |
15 | /** | |
16 | * Extends ResettingController to change the redirection after success. | |
17 | * | |
18 | * @param Request $request | |
19 | * @param $token | |
20 | * | |
21 | * @return null|RedirectResponse|\Symfony\Component\HttpFoundation\Response | |
22 | */ | |
23 | public function resetAction(Request $request, $token) | |
24 | { | |
25 | /** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */ | |
26 | $formFactory = $this->get('fos_user.resetting.form.factory'); | |
27 | /** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */ | |
28 | $userManager = $this->get('fos_user.user_manager'); | |
29 | /** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */ | |
30 | $dispatcher = $this->get('event_dispatcher'); | |
31 | ||
32 | $user = $userManager->findUserByConfirmationToken($token); | |
33 | ||
34 | if (null === $user) { | |
35 | throw new NotFoundHttpException(sprintf('The user with "confirmation token" does not exist for value "%s"', $token)); | |
36 | } | |
37 | ||
38 | $event = new GetResponseUserEvent($user, $request); | |
39 | $dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_INITIALIZE, $event); | |
40 | ||
41 | if (null !== $event->getResponse()) { | |
42 | return $event->getResponse(); | |
43 | } | |
44 | ||
45 | $form = $formFactory->createForm(); | |
46 | $form->setData($user); | |
47 | ||
48 | $form->handleRequest($request); | |
49 | ||
50 | if ($form->isValid()) { | |
51 | $event = new FormEvent($form, $request); | |
52 | $dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_SUCCESS, $event); | |
53 | ||
54 | $userManager->updateUser($user); | |
55 | ||
56 | if (null === $response = $event->getResponse()) { | |
57 | $this->get('session')->getFlashBag()->add( | |
58 | 'notice', | |
59 | 'Password updated' | |
60 | ); | |
61 | $url = $this->generateUrl('homepage'); | |
62 | $response = new RedirectResponse($url); | |
63 | } | |
64 | ||
65 | $dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_COMPLETED, new FilterUserResponseEvent($user, $request, $response)); | |
66 | ||
67 | return $response; | |
68 | } | |
69 | ||
70 | return $this->render('FOSUserBundle:Resetting:reset.html.twig', array( | |
71 | 'token' => $token, | |
72 | 'form' => $form->createView(), | |
73 | )); | |
74 | } | |
75 | } |