src/Controller/Blo/AuthController.php line 33

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Blo;
  4. use App\Entity\User;
  5. use App\Form\ClientRegistrationFormType;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  13. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  14. /**
  15.  * Connexion et inscription clients BLO.
  16.  */
  17. class AuthController extends AbstractController
  18. {
  19.     #[Route('/connexion'name'blo_login'methods: ['GET'])]
  20.     public function login(): Response
  21.     {
  22.         if ($this->getUser()) {
  23.             return $this->redirectToRoute('app_blo_home_index');
  24.         }
  25.         return $this->redirectToRoute('login');
  26.     }
  27.     #[Route('/inscription'name'blo_register'methods: ['GET''POST'])]
  28.     public function register(
  29.         Request $request,
  30.         UserPasswordHasherInterface $passwordHasher,
  31.         EntityManagerInterface $em,
  32.         TokenStorageInterface $tokenStorage,
  33.     ): Response {
  34.         if ($this->getUser()) {
  35.             return $this->redirectToRoute('app_blo_home_index');
  36.         }
  37.         $user = new User();
  38.         $form $this->createForm(ClientRegistrationFormType::class, $user);
  39.         $form->handleRequest($request);
  40.         if ($form->isSubmitted() && $form->isValid()) {
  41.             $user->setPassword(
  42.                 $passwordHasher->hashPassword(
  43.                     $user,
  44.                     $form->get('plainPassword')->getData()
  45.                 )
  46.             );
  47.             $user->setRoles(['ROLE_USER''ROLE_CUSTOMER']);
  48.             $user->setRole(null);
  49.             $user->setStatus(true);
  50.             $em->persist($user);
  51.             $em->flush();
  52.             // Connexion automatique après inscription
  53.             $token = new UsernamePasswordToken($user'main'$user->getRoles());
  54.             $tokenStorage->setToken($token);
  55.             $request->getSession()->set('_security_main'serialize($token));
  56.             $this->addFlash('success''Votre compte a été créé. Vous êtes connecté.');
  57.             return $this->redirectToRoute('app_blo_home_index');
  58.         }
  59.         return $this->render('blo/auth/register.html.twig', [
  60.             'registrationForm' => $form->createView(),
  61.         ]);
  62.     }
  63. }