src/Bidcoz/Bundle/UserBundle/Controller/ResettingController.php line 23

Open in your IDE?
  1. <?php
  2. namespace Bidcoz\Bundle\UserBundle\Controller;
  3. use Bidcoz\Bundle\CoreBundle\Controller\CoreController;
  4. use FOS\UserBundle\Event\FilterUserResponseEvent;
  5. use FOS\UserBundle\Event\FormEvent;
  6. use FOS\UserBundle\Event\GetResponseUserEvent;
  7. use FOS\UserBundle\FOSUserEvents;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  12. use Symfony\Component\Security\Core\Security;
  13. class ResettingController extends CoreController
  14. {
  15.     public function request(Request $request)
  16.     {
  17.         $session $request->getSession();
  18.         // last username entered by the user
  19.         $lastUsername = (null === $session) ? '' $session->get(Security::LAST_USERNAME);
  20.         return $this->render('@FOSUser/Resetting/request.html.twig', [
  21.             'last_username' => $lastUsername,
  22.         ]);
  23.     }
  24.     public function reset(Request $request$token)
  25.     {
  26.         $formFactory $this->get('fos_user.resetting.form.factory');
  27.         $userManager $this->getUserManager();
  28.         $dispatcher  $this->getEventDispatcher();
  29.         $router      $this->getRouter();
  30.         $user $userManager->findUserByConfirmationToken($token);
  31.         if (null === $user) {
  32.             throw new NotFoundHttpException(sprintf('The user with "confirmation token" does not exist for value "%s"'$token));
  33.         }
  34.         $event = new GetResponseUserEvent($user$request);
  35.         $dispatcher->dispatch($eventFOSUserEvents::RESETTING_RESET_INITIALIZE);
  36.         if (null !== $event->getResponse()) {
  37.             return $event->getResponse();
  38.         }
  39.         $form $formFactory->createForm();
  40.         $form->setData($user);
  41.         $form->handleRequest($request);
  42.         if ($form->isSubmitted() && $form->isValid()) {
  43.             $event = new FormEvent($form$request);
  44.             $dispatcher->dispatch($eventFOSUserEvents::RESETTING_RESET_SUCCESS);
  45.             $userManager->updateUser($user);
  46.             if (null === $response $event->getResponse()) {
  47.                 if ($campaign $user->getLastVisitCampaign()) {
  48.                     $url $router->generate('campaign_home', [
  49.                         'orgSlug'      => $campaign->getOrganization()->getSlug(),
  50.                         'campaignSlug' => $campaign->getSlug(),
  51.                     ]);
  52.                     $response = new RedirectResponse($url);
  53.                 } elseif ($organization $user->getLastVisitOrganization()) {
  54.                     $url $this->generateUrl('organization_home', [
  55.                         'orgSlug' => $organization->getSlug(),
  56.                     ]);
  57.                     $response = new RedirectResponse($url);
  58.                 } else {
  59.                     $url      $this->generateUrl('fos_user_profile_edit');
  60.                     $response = new RedirectResponse($url);
  61.                 }
  62.             }
  63.             $dispatcher->dispatch(new FilterUserResponseEvent($user$request$response), FOSUserEvents::RESETTING_RESET_COMPLETED);
  64.             return $response;
  65.         }
  66.         return $this->render('@FOSUser\Resetting\reset.html.twig', [
  67.             'token' => $token,
  68.             'form'  => $form->createView(),
  69.         ]);
  70.     }
  71.     /**
  72.      * Tell the user to check his email provider.
  73.      *
  74.      * @return RedirectResponse|Response|null
  75.      */
  76.     public function checkEmail(Request $request)
  77.     {
  78.         $username $request->query->get('username');
  79.         $user $this->getUserManager()->findUserByUsernameOrEmail($username);
  80.         if (null === $user) {
  81.             // the user does not exist
  82.             return $this->render('@FOSUser/Resetting/no_account.html.twig');
  83.         }
  84.         if (empty($username)) {
  85.             // the user does not come from the sendEmail action
  86.             return new RedirectResponse($this->generateUrl('fos_user_resetting_request'));
  87.         }
  88.         return $this->render('@FOSUser/Resetting/check_email.html.twig', [
  89.             'email'         => $username,
  90.             'tokenLifetime' => ceil($this->container->getParameter('fos_user.resetting.token_ttl') / 3600),
  91.         ]);
  92.     }
  93. }