src/Controller/RegistrationController.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Uid;
  4. use Twig\Environment;
  5. use DateTimeImmutable;
  6. use App\Security\EmailVerifier;
  7. use App\Repository\UidRepository;
  8. use App\Form\RegistrationFormType;
  9. use App\Security\AppAuthenticator;
  10. use Symfony\Component\Mime\Address;
  11. use App\Repository\ParamsRepository;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\Mailer\MailerInterface;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use SymfonyCasts\Bundle\VerifyEmail\VerifyEmailHelperInterface;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  21. use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface;
  22. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  23. class RegistrationController extends AbstractController
  24. {
  25.     private $emailVerifier;
  26.     private $twig;
  27.     public function __construct(EmailVerifier $emailVerifierEnvironment $twig)
  28.     {
  29.         $this->emailVerifier $emailVerifier;
  30.         $this->twig $twig;
  31.     }
  32.     /**
  33.      * @Route("/inscription", name="app_register")
  34.      */
  35.     public function register(
  36.         Request $request
  37.         UserPasswordHasherInterface $userPasswordHasher
  38.         UserAuthenticatorInterface $userAuthenticator
  39.         AppAuthenticator $authenticator
  40.         ParamsRepository $paramsRepository
  41.         EntityManagerInterface $entityManager,
  42.         VerifyEmailHelperInterface $verifyEmailHelper
  43.     ): Response 
  44.     {
  45.         $user = new Uid();
  46.     
  47.         $form $this->createForm(RegistrationFormType::class, $user);
  48.         $form->handleRequest($request);
  49.         if ($form->isSubmitted() && $form->isValid()) {
  50.             $user->setCreatedAt(new DateTimeImmutable());
  51.             $user->setRoles(["ROLE_CUSTOMER"]);
  52.             $user->setIsActiv(false);
  53.             $user->setPassword(
  54.             $userPasswordHasher->hashPassword(
  55.                     $user,
  56.                     $form->get('plainPassword')->getData()
  57.                 )
  58.             );
  59.             $token uniqid();
  60.             $user->setSignature($token);
  61.             $entityManager->persist($user);
  62.             $entityManager->flush();
  63.             $parameters = [
  64.                 'user' => $user,
  65.                 'token' => $token
  66.             ];
  67.             $headers "From:no-reply@mazykkavinyles.fr" "\r\n";
  68.             $headers .= "MIME-Version: 1.0" "\r\n";
  69.             $headers .= "Content-type:text/html;charset=UTF-8" "\r\n";
  70.             mail($user->getEmail(),"Confirmation inscription - Mazykka Vinyles" $this->twig->render("registration/confirmation_email.html.twig"$parameters),$headers);
  71.             //mail('wd-creation@live.fr',"Confirmation inscription - Mazykka Vinyles" , $this->twig->render("registration/confirmation_email.html.twig", $parameters),$headers);
  72.             $userAuthenticator->authenticateUser(
  73.                 $user,
  74.                 $authenticator,
  75.                 $request
  76.             );
  77.             
  78.             $this->addFlash('success''Inscription enregistrée. Un e-mail de confirmation vient de vous être envoyé.');
  79.             return $this->redirectToRoute('app_register');
  80.         }
  81.         return $this->render('registration/register.html.twig', [
  82.             'current' => 'register',
  83.             'params' => $paramsRepository->findAll(),
  84.             'registrationForm' => $form->createView(),
  85.         ]);
  86.     }
  87.     /**
  88.      * @Route("/verify/email/{email}", name="app_verify_email")
  89.      */
  90.     public function verifyUserEmail($emailRequest $requestUidRepository $uidRepository): Response
  91.     {
  92.         $user $uidRepository->findOneBy(['email' => $email'signature' => $request->query->get('_t')]);
  93.         //$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  94.         
  95.         // validate email confirmation link, sets User::isVerified=true and persists
  96.         if($user){
  97.             try {
  98.                 $this->emailVerifier->handleEmailConfirmation($request$user);
  99.             } catch (VerifyEmailExceptionInterface $exception) {
  100.                 $this->addFlash('verify_email_error'$exception->getReason());
  101.     
  102.                 return $this->redirectToRoute('app_register');
  103.             }
  104.             // @TODO Change the redirect on success and handle or remove the flash message in your templates
  105.             $this->addFlash('success''Inscription confirmée.');
  106.     
  107.             return $this->redirectToRoute('home');
  108.         }
  109.         else {
  110.             $this->addFlash('danger''Aucune validation d\'inscription trouvée');
  111.             return $this->redirectToRoute('app_register');
  112.         }
  113.     }
  114. }