src/Controller/RegisterController.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\RegisterType;
  5. use App\Security\LoginAuthenticator;
  6. use App\Service\Mail;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  14. /**
  15.  * Formulaire d'inscription créé manuellement
  16.  * Une fois inscris, l'utilisateur est automatiquement authentifié.
  17.  */
  18. class RegisterController extends AbstractController
  19. {
  20.     #[Route('/inscription'name'register')]
  21.     public function index(Request $requestUserPasswordHasherInterface $userPasswordHasherUserAuthenticatorInterface $userAuthenticatorLoginAuthenticator $authenticatorEntityManagerInterface $em): Response
  22.     {
  23.         $user = new User();
  24.         $form $this->createForm(RegisterType::class,$user);
  25.         $form->handleRequest($request);
  26.         if ($form->isSubmitted() && $form->isValid()) {
  27.             $user->setPassword($userPasswordHasher->hashPassword($user,$form->get('password')->getData()));
  28.             $em->persist($user);
  29.             $em->flush();
  30.             // Envoi mail confirmation
  31.             $content "Bonjour {$user->getFirstname()} nous vous remercions de votre inscription";
  32.             (new Mail)->send($user->getEmail(), $user->getFirstname(), "Bienvenue sur la Boot'ique"$content);
  33.             // Loggin auto
  34.             return $userAuthenticator->authenticateUser(
  35.                 $user,
  36.                 $authenticator,
  37.                 $request
  38.             );
  39.         }
  40.         return $this->renderForm('register/index.html.twig', [
  41.             'form' => $form,
  42.         ]);
  43.     }
  44. }