src/Controller/ResettingController.php line 38

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the FOSUserBundle package.
  4.  *
  5.  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace App\Controller;
  11. use App\Entity\User;
  12. use App\Service\UserManager;
  13. use FOS\UserBundle\Event\FilterUserResponseEvent;
  14. use FOS\UserBundle\Controller\ResettingController as BaseController;
  15. use FOS\UserBundle\Event\FormEvent;
  16. use FOS\UserBundle\Event\GetResponseUserEvent;
  17. use FOS\UserBundle\Form\Factory\FactoryInterface;
  18. use FOS\UserBundle\FOSUserEvents;
  19. use FOS\UserBundle\Mailer\MailerInterface;
  20. use FOS\UserBundle\Model\UserManagerInterface;
  21. use FOS\UserBundle\Util\TokenGeneratorInterface;
  22. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  23. use Symfony\Component\HttpFoundation\RedirectResponse;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  27. use Symfony\Component\Routing\Annotation\Route;
  28. /**
  29.  * Controller managing the resetting of the password.
  30.  *
  31.  * @author Thibault Duplessis <[email protected]>
  32.  * @author Christophe Coevoet <[email protected]>
  33.  */
  34. class ResettingController extends BaseController
  35. {
  36.     /** @var EventDispatcherInterface */
  37.     private $eventDispatcher;
  38.     /** @var FactoryInterface */
  39.     private $formFactory;
  40.     /** @var UserManagerInterface */
  41.     private $userManager;
  42.     /**
  43.      * @param EventDispatcherInterface $eventDispatcher
  44.      * @param FactoryInterface         $formFactory
  45.      * @param UserManagerInterface     $userManager
  46.      * @param TokenGeneratorInterface  $tokenGenerator
  47.      * @param MailerInterface          $mailer
  48.      * @param int                      $retryTtl
  49.      */
  50.     public function __construct(EventDispatcherInterface $eventDispatcherFactoryInterface $formFactoryUserManagerInterface $userManagerTokenGeneratorInterface $tokenGeneratorMailerInterface $mailer$retryTtl)
  51.     {
  52.         parent::__construct($eventDispatcher$formFactory$userManager$tokenGenerator$mailer$retryTtl);
  53.         $this->eventDispatcher $eventDispatcher;
  54.         $this->formFactory $formFactory;
  55.         $this->userManager $userManager;
  56.     }
  57.     /**
  58.      * Reset user password.
  59.      *
  60.      * @param Request $request
  61.      * @param string  $token
  62.      *
  63.      * @return Response
  64.      */
  65.     public function resetAction(Request $request$token)
  66.     {
  67.         $user $this->userManager->findUserByConfirmationToken($token);
  68.         if (null === $user) {
  69.             return new RedirectResponse($this->container->get('router')->generate('fos_user_security_login'));
  70.         }
  71.         $event = new GetResponseUserEvent($user$request);
  72.         $this->eventDispatcher->dispatch(FOSUserEvents::RESETTING_RESET_INITIALIZE$event);
  73.         if (null !== $event->getResponse()) {
  74.             return $event->getResponse();
  75.         }
  76.         $form $this->formFactory->createForm();
  77.         $form->setData($user);
  78.         $form->handleRequest($request);
  79.         if ($form->isSubmitted() && $form->isValid()) {
  80.             $event = new FormEvent($form$request);
  81.             $this->eventDispatcher->dispatch(FOSUserEvents::RESETTING_RESET_SUCCESS$event);
  82.             $this->userManager->updateUser($user);
  83.             if (null === $response $event->getResponse()) {
  84.                 $url $this->generateUrl('fos_user_profile_show', ["user" => $user->getId()]);
  85.                 $response = new RedirectResponse($url);
  86.             }
  87.             $this->eventDispatcher->dispatch(
  88.                 FOSUserEvents::RESETTING_RESET_COMPLETED,
  89.                 new FilterUserResponseEvent($user$request$response)
  90.             );
  91.             return $response;
  92.         }
  93.         return $this->render('@FOSUser/Resetting/reset.html.twig', array(
  94.             'token' => $token,
  95.             'form' => $form->createView(),
  96.         ));
  97.     }
  98.     /**
  99.      *
  100.      * Envoie le mail pour reset le mot de passe à un utilisateur
  101.      *
  102.      * @Route("admin/profile/resetting-password/{user}", name="app_resetting_send_password", methods={"GET"})
  103.      * @param UserManager $userManager
  104.      * @param User $user
  105.      * @return RedirectResponse
  106.      * @throws \Throwable
  107.      * @throws \Twig\Error\LoaderError
  108.      * @throws \Twig\Error\RuntimeError
  109.      * @throws \Twig\Error\SyntaxError
  110.      */
  111.     public function sendResettingPassword(UserManager $userManagerUser $user)
  112.     {
  113.         $userManager->sendMailToInitPassword($usertrue);
  114.         $this->addFlash("success""Le mail a été envoyer à " $user->getEmail() . " !");
  115.         return $this->redirectToRoute("fos_user_profile_edit", ['user' => $user->getId()]);
  116.     }
  117. }