src/Controller/Vitrine/RegisterController.php line 74

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Vitrine;
  3. use App\Entity\Core\Mails;
  4. use App\Entity\Core\Users;
  5. use App\Entity\Cvs\Shares;
  6. use App\Entity\Pages\Pages;
  7. use App\Entity\Pages\PagesHasBlocks;
  8. use App\Form\Core\UsersType;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  21. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  22. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  23. /**
  24.  * Inscription
  25.  */
  26. class RegisterController extends AbstractController
  27. {
  28.     private $passwordEncoder;
  29.     private $ms;
  30.     private $em;
  31.     public function __construct(UserPasswordEncoderInterface $passwordEncoder,
  32.                                 EntityManagerInterface $em,
  33.                                 \App\Services\Mails $ms
  34.     ) {
  35.         $this->passwordEncoder $passwordEncoder;
  36.         $this->em $em;
  37.         $this->ms $ms;
  38.     }
  39.     /**
  40.      * Page d'inscription
  41.      * @param Request $request
  42.      * @param \App\Services\Mails $ms
  43.      * @return Response
  44.      */
  45.     public function register(Request $request): Response
  46.     {
  47.         $session $request->getSession();
  48.         $themeSelection $_ENV['THEME_BLOG'];
  49.         $locale $request->getLocale();
  50.         $registerOnline $_ENV['APPLICATION_REGISTER'];
  51.         if($registerOnline == "offline") {
  52.             return $this->redirectToRoute('homepage');
  53.         }
  54.         $user $this->getUser();
  55.         if($user != null) {
  56.             return $this->redirectToRoute('homepage');
  57.         }
  58.         $sharingCode $session->get("sharing-code");
  59.         $shareInvitation null;
  60.         if(!empty($sharingCode)) {
  61.             $shareInvitation $this->em->getRepository(Shares::class)->findOneBy(['code' => $sharingCode]);
  62.         }
  63.         $page $this->em->getRepository(Pages::class)->findOneBy(['locale' => $locale'name' => 'register_nopassword']);
  64.         $blocks $this->em->getRepository(PagesHasBlocks::class)->findBy(['page' => $page'type' => 'prod''startPage' => false],['sequence' => 'ASC']);
  65.         $page->setViews((int)$page->getViews() + 1);
  66.         $this->em->persist($page);
  67.         $this->em->flush();
  68.         $newUser = new Users();
  69.         $newUser->setPremium(false);
  70.         $form $this->createForm(UsersType::class, $newUser);
  71.         $form->handleRequest($request);
  72.         if ($form->isSubmitted() && $form->isValid()) {
  73.             $data $request->request->all();
  74.             $data $data['users'];
  75.             if($data['password']['first'] != $data['password']['second']) {
  76.                 $session->getFlashBag()->add('danger''Votre second mot de passe n\'est pas identique');
  77.                 return $this->redirectToRoute('app_register');
  78.             }
  79.             $verificationUser $this->em->getRepository(Users::class)->findOneBy(['email' => $data['email']]);
  80.             if ($verificationUser == null) {
  81.                 $newPassword $newUser->getPassword();
  82.                 $newUser->setVerification(false);
  83.                 $newUser->setFirst(false);
  84.                 $newUser->setEnabled(true);
  85.                 $newUser->setPassword($this->passwordEncoder->encodePassword($newUser$newUser->getPassword()));
  86.                 $newUser->setRoles(['ROLE_USER']);
  87.                 $newUser->setUpdatedAt(new \DateTime("now"));
  88.                 $newUser->setCreatedAt(new \DateTime("now"));
  89.                 $this->em->persist($newUser);
  90.                 $this->em->flush();
  91.                 // Envoyer un mail d'inscription à l'utilisateur
  92.                 $templateEntity $this->em->getRepository(Mails::class)->findOneBy(['name' => "register"]);
  93.                 $this->ms->sendUserPassword($newUser,$newPassword,$templateEntity);
  94.                 $session->getFlashBag()->add('success''Merci de votre inscription');
  95.                 return $this->redirectToRoute('app_login');
  96.             }
  97.             $session->getFlashBag()->add('danger''L\'adresse mail est déjà dans notre base de données');
  98.             return $this->redirectToRoute('app_register');
  99.         }
  100.         $response =  $this->render('vitrine/'.$themeSelection.'/register.html.twig', [
  101.             'page' => $page,
  102.             'blocks' => $blocks,
  103.             'form' => $form->createView(),
  104.             'invitation' => $shareInvitation
  105.         ]);
  106.         //$response->setSharedMaxAge(3600);
  107.         return $response;
  108.     }
  109. }