src/Controller/RegistrationController.php line 39

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\RegistrationFormType;
  5. use App\Repository\UserRepository;
  6. use App\Security\CustomAuthenticator;
  7. use App\Security\EmailVerifier;
  8. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  14. use Symfony\Component\Mailer\MailerInterface;
  15. use Symfony\Component\Mime\Address;
  16. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  19. class RegistrationController extends AbstractController
  20. {
  21. //    private EmailVerifier $emailVerifier;
  22. //    private string $email_sender;
  23.     private RequestStack $requestStack;
  24.     public function __construct(RequestStack $requestStack)
  25.     {
  26.         $this->requestStack $requestStack;
  27. //        $this->emailVerifier = $emailVerifier;
  28. //        $this->email_sender = $email_sender;
  29.     }
  30.     /**
  31.      * @throws TransportExceptionInterface
  32.      */
  33.     #[Route('/enregistrement'name'app_register')]
  34.     public function register(Request $requestUserPasswordHasherInterface $userPasswordHasherUserRepository $userRepositoryMailerInterface $mailerUserAuthenticatorInterface $authenticatorCustomAuthenticator $customAuthenticator): Response
  35.     {
  36.         $user = new User();
  37.         $form $this->createForm(RegistrationFormType::class, $user);
  38.         $form->handleRequest($request);
  39.         if ($form->isSubmitted() && $form->isValid()) {
  40. //            $session = $this->requestStack->getSession();
  41. //            $session->remove('path_reservation_new');
  42.             // encode the plain password
  43.             $user->setPassword(
  44.             $userPasswordHasher->hashPassword(
  45.                     $user,
  46.                     $form->get('password')->getData()
  47.                 )
  48.             );
  49.             if ($userRepository->save($user)) {
  50.                 //TODO generate a signed url and email it to the user
  51.                 $email = (new TemplatedEmail())
  52.                     ->from('mdviaduc@gmail.com')
  53.                     ->to(new Address($user->getEmail()))
  54.                     ->subject("Les motards du viaduc - Compte créé")
  55.                     ->htmlTemplate('emails/register.html.twig')
  56.                     ->context(['user' => $user])
  57.                 ;
  58.                 $mailer->send($email);
  59.                 $this->addFlash('success''Vous êtes bien enregistré, vous allez recevoir un mail de confirmation.');
  60.                 return $authenticator->authenticateUser($user$customAuthenticator$request);
  61.             }
  62.         }
  63.         return $this->render('login/register.html.twig', [
  64.             'registrationForm' => $form->createView(),
  65.         ]);
  66.     }
  67. }