src/Controller/SecurityController.php line 18

Open in your IDE?
  1. <?php
  2.     
  3.     namespace App\Controller;
  4.     
  5.     use App\Entity\User;
  6.     use App\Form\AuthType;
  7.     use Doctrine\Persistence\ManagerRegistry;
  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\AuthenticationUtils;
  14.     
  15.     class SecurityController extends AbstractController
  16.     {
  17.         #[Route(path'/login'name'app_login')]
  18.         public function login(AuthenticationUtils $authenticationUtils): Response
  19.         {
  20.             if ($this->getUser()) {
  21.                 return $this->redirectToRoute('app_home');
  22.             }
  23.             
  24.             $error $authenticationUtils->getLastAuthenticationError();
  25.             $lastUsername $authenticationUtils->getLastUsername();
  26.             
  27.             return $this->render(
  28.                 'security/login.html.twig', [
  29.                     'last_username' => $lastUsername,
  30.                     'error' => $error
  31.                 ]
  32.             );
  33.         }
  34.         
  35.         #[Route(path'/logout'name'app_logout')]
  36.         public function logout(): void
  37.         {
  38.             throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  39.         }
  40.         
  41.         #[Route('/register'name'app_register')]
  42.         public function register(
  43.             ManagerRegistry $managerRegistry,
  44.             Request $request,
  45.             UserPasswordHasherInterface $passwordHasher
  46.         ): Response
  47.         {
  48.             $user = new User();
  49.             $form $this->createForm(AuthType::class);
  50.             
  51.             $form->handleRequest($request);
  52.             if ($form->isSubmitted() && $form->isValid()) {
  53.                 $data $form->getData();
  54.                 $user->setFirstName($data['firstName']);
  55.                 $user->setLastName($data['lastName']);
  56.                 $user->setEmail($data['email']);
  57.                 $hashedPassword $passwordHasher->hashPassword(
  58.                     $user,
  59.                     $data['password']
  60.                 );
  61.                 $user->setPassword($hashedPassword);
  62.                 $user->setStatus(0);
  63.                 $user->setRoles(['ROLE_USER']);
  64.                 $entityManager $managerRegistry->getManager();
  65.                 $entityManager->persist($user);
  66.                 $entityManager->flush();
  67.                 
  68.                 return $this->redirectToRoute('app_login');
  69.             }
  70.             
  71.             return $this->render('security/register.html.twig', [
  72.                 'form' => $form->createView(),
  73.             ]);
  74.         }
  75.     }