vendor/arshdf/user-bundle-sf5/src/Controller/RegistrationController.php line 45

Open in your IDE?
  1. <?php
  2. namespace ARSHDF\UserBundle\Controller;
  3. use ARSHDF\UserBundle\Entity\UserManager;
  4. use ARSHDF\UserBundle\Form\ImportType;
  5. use ARSHDF\UserBundle\Form\UserType;
  6. use ARSHDF\UserBundle\Service\LogService;
  7. use ARSHDF\UserBundle\Service\PasswordService;
  8. use ARSHDF\UserBundle\Service\UserNotificationService;
  9. use DateTime;
  10. use Exception;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  13. use Symfony\Component\Form\FormError;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasher;
  17. class RegistrationController extends AbstractController
  18. {
  19.     private UserManager $userManager;
  20.     private UserPasswordHasher $passwordHasher;
  21.     private ParameterBagInterface $parameterBag;
  22.     private UserNotificationService $notificationService;
  23.     private LogService $logService;
  24.     private PasswordService $passwordService;
  25.     public function __construct(UserManager $userManagerUserPasswordHasher $passwordHasherParameterBagInterface $parameterBag,
  26.                                 UserNotificationService $notificationServiceLogService $logServicePasswordService $passwordService)
  27.     {
  28.         $this->userManager $userManager;
  29.         $this->passwordHasher $passwordHasher;
  30.         $this->parameterBag $parameterBag;
  31.         $this->notificationService $notificationService;
  32.         $this->logService $logService;
  33.         $this->passwordService $passwordService;
  34.     }
  35.     /**
  36.      * @throws Exception
  37.      */
  38.     public function registration(Request $request): Response
  39.     {
  40.         $allow_inscription $this->parameterBag->get('user.gestion_admin.allow_inscription');
  41.         if (!$allow_inscription){
  42.             return $this->redirectToRoute('arshdf_user_login');
  43.         }
  44.         $auto_enabled_user $this->parameterBag->get('user.gestion_admin.user_auto_enabled');
  45.         $user $this->userManager->createUser();
  46.         $form $this->createForm(UserType::class, $user);
  47.         $form->handleRequest($request);
  48.         if ($form->isSubmitted() && $form->isValid()){
  49.             $em $this->getDoctrine()->getManager();
  50.             if (!$this->passwordService->validateStrength($form->get('plainPassword')->getData())){
  51.                 $form->get('plainPassword')->addError(new FormError($this->passwordService->getPasswordPatternMessage()));
  52.                 return $this->render('@User/registration.html.twig', [
  53.                     'form' => $form->createView(),
  54.                 ]);
  55.             }
  56.             try {
  57.                 $user->setEnabled($auto_enabled_user);
  58.                 $user->setToActivate(!$auto_enabled_user);
  59.                 $user->setDeleted(false);
  60.                 $user->setCreatedAt(new DateTime());
  61.                 $user->setPassword(
  62.                     $this->passwordHasher->hashPassword(
  63.                         $user,
  64.                         $form->get('plainPassword')->getData()
  65.                     )
  66.                 );
  67.                 $user->setPasswordUpdatedAt(new DateTime());
  68.                 $user->addRole('ROLE_USER');
  69.                 $this->logService->generate(LogService::USER_REGISTERED$user);
  70.                 $em->persist($user);
  71.                 $em->flush();
  72.                 if ($auto_enabled_user){
  73.                     $this->addFlash('success''Votre compte a été créé.');
  74.                 }else{
  75.                     $this->notificationService->sendNewAccountNotificationToGestionnaire($user);
  76.                     $this->addFlash('success''Votre compte a été créé. Il est en attente de validation par le gestionnaire d\'habilitation.');
  77.                 }
  78.                 $this->notificationService->sendNewAccountNotificationToUser($user);
  79.             }catch (Exception $exception){
  80.                 throw new Exception($exception->getMessage());
  81.             }
  82.             return $this->redirectToRoute('arshdf_user_login');
  83.         }
  84.         return $this->render('@User/registration.html.twig', [
  85.             'form' => $form->createView(),
  86.         ]);
  87.     }
  88. }