src/Controller/RegistrationController.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Service\MailerService;
  5. use App\Service\UserManager;
  6. use FOS\UserBundle\Controller\RegistrationController as BaseController;
  7. use FOS\UserBundle\Event\FormEvent;
  8. use FOS\UserBundle\Event\GetResponseUserEvent;
  9. use FOS\UserBundle\Form\Factory\FactoryInterface;
  10. use FOS\UserBundle\FOSUserEvents;
  11. use FOS\UserBundle\Model\UserManagerInterface;
  12. use FOS\UserBundle\Util\TokenGeneratorInterface;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  14. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  15. use Symfony\Component\HttpFoundation\RedirectResponse;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  19. class RegistrationController extends BaseController
  20. {
  21.     /**
  22.      * @var EventDispatcherInterface
  23.      */
  24.     private $eventDispatcher;
  25.     /**
  26.      * @var FactoryInterface
  27.      */
  28.     private $formFactory;
  29.     /**
  30.      * @var UserManagerInterface
  31.      */
  32.     private $fosUserManager;
  33.     /**
  34.      * @var TokenGeneratorInterface
  35.      */
  36.     private $tokenGenerator;
  37.     /**
  38.      * @var MailerService
  39.      */
  40.     private $mailerService;
  41.     /**
  42.      * @var UserManager
  43.      */
  44.     private $userManager;
  45.     /**
  46.      * RegistrationController constructor.
  47.      * @param EventDispatcherInterface $eventDispatcher
  48.      * @param FactoryInterface $formFactory
  49.      * @param UserManagerInterface $fosUserManager
  50.      * @param TokenStorageInterface $tokenStorage
  51.      * @param TokenGeneratorInterface $tokenGenerator
  52.      * @param MailerService $mailerService
  53.      * @param UserManager $userManager
  54.      */
  55.     public function __construct(
  56.         EventDispatcherInterface $eventDispatcher,
  57.         FactoryInterface $formFactory,
  58.         UserManagerInterface $fosUserManager,
  59.         TokenStorageInterface $tokenStorage,
  60.         TokenGeneratorInterface $tokenGenerator,
  61.         MailerService $mailerService,
  62.         UserManager $userManager
  63.     )
  64.     {
  65.         parent::__construct($eventDispatcher$formFactory$fosUserManager$tokenStorage);
  66.         $this->eventDispatcher $eventDispatcher;
  67.         $this->formFactory $formFactory;
  68.         $this->fosUserManager $fosUserManager;
  69.         $this->tokenGenerator $tokenGenerator;
  70.         $this->mailerService $mailerService;
  71.         $this->userManager $userManager;
  72.     }
  73.     /**
  74.      * @param Request $request
  75.      *
  76.      * @return Response
  77.      *
  78.      * @throws \Throwable
  79.      * @throws \Twig\Error\LoaderError
  80.      * @throws \Twig\Error\RuntimeError
  81.      * @throws \Twig\Error\SyntaxError
  82.      * @Security("has_role('ROLE_USER')")
  83.      */
  84.     public function registerAction(Request $request)
  85.     {
  86.         $this->denyAccessUnlessGranted('ICO_EDIT_USER'$this->getUser());
  87.         $formFactory $this->formFactory;
  88.         $fosUserManager $this->fosUserManager;
  89.         $dispatcher $this->eventDispatcher;
  90.         /* @var $user User */
  91.         $user $fosUserManager->createUser();
  92.         $user->setEnabled(true);
  93.         $event = new GetResponseUserEvent($user$request);
  94.         $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE$event);
  95.         if (null !== $event->getResponse()) {
  96.             return $event->getResponse();
  97.         }
  98.         $form $formFactory->createForm();
  99.         $form->setData($user);
  100.         $form->handleRequest($request);
  101.         if ($form->isSubmitted()) {
  102.             if ($form->isValid()) {
  103.                 $event = new FormEvent($form$request);
  104.                 $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS$event);
  105.                 if ($form->get('passwordSendMail')->getData()) {
  106.                     $this->userManager->sendMailToInitPassword($user);
  107.                 } else {
  108.                     $fosUserManager->updateUser($user);
  109.                 }
  110.                 if (null === $response $event->getResponse()) {
  111.                     $url $this->generateUrl('sunshine_page', ['pageId' => 'userGrid']);
  112.                     $response = new RedirectResponse($url);
  113.                 }
  114.                 $this->get('session')->getFlashBag()->add('success''Enregistrement effectuĂ© avec succès');
  115.                 return $response;
  116.             }
  117.             $event = new FormEvent($form$request);
  118.             $dispatcher->dispatch(FOSUserEvents::REGISTRATION_FAILURE$event);
  119.             if (null !== $response $event->getResponse()) {
  120.                 return $response;
  121.             }
  122.         }
  123.         return $this->render(
  124.             '@FOSUser/Registration/register.html.twig',
  125.             array(
  126.                 'form' => $form->createView(),
  127.             )
  128.         );
  129.     }
  130. }