Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 58

Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler

src/Controller/LoginController.php line 55

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Form\LoginFormType;
  5. use App\Form\RegisterFormType;
  6. use App\Service\NotificationService;
  7. use App\Service\SessionService;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Locale;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  12. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  18. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  19. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  20. use Symfony\Component\Security\Http\SecurityEvents;
  21. use Symfony\Component\Security\Http\Util\TargetPathTrait;
  22. use Symfony\Contracts\Translation\TranslatorInterface;
  23. class LoginController extends AbstractController
  24. {
  25.     use TargetPathTrait;
  26.     private EntityManagerInterface $em;
  27.     public function __construct(EntityManagerInterface $em, private ParameterBagInterface $parameterBag, private TranslatorInterface $translator)
  28.     {
  29.         $this->em $em;
  30.     }
  31.     #[Route('/{_locale<%app.supported_locales%>}/connexion'name'app_login')]
  32.     public function index(Request $requestAuthenticationUtils $authenticationUtils): Response
  33.     {
  34.         if ($this->getUser()) {
  35.             if ($this->getUser()->isCustomer()) {
  36.                 return $this->redirectToRoute('app_account', ['_locale' => $this->getUser()->getPreferredLocale() ?? $this->parameterBag->get('app.default_locale')]);
  37.             } else {
  38.                 return $this->redirectToRoute('admin_dashboard');
  39.             }
  40.         }
  41.         $redirectRoute $this->getTargetPath($request->getSession(), 'user_secured_area');
  42.         $error $authenticationUtils->getLastAuthenticationError();
  43.         $loginForm $this->createForm(LoginFormType::class, null, array(
  44.             'lastUsername' => $authenticationUtils->getLastUsername()
  45.         ));
  46.         return $this->render('login/index.html.twig', [
  47.             'error' => $error,
  48.             'form' => $loginForm->createView(),
  49.             'redirectRoute' => $redirectRoute
  50.         ]);
  51.     }
  52.     #[Route('/{_locale<%app.supported_locales%>}/logout'name'app_logout')]
  53.     public function logout(): void
  54.     {
  55.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  56.     }
  57.     #[Route('/{_locale<%app.supported_locales%>}/inscription/{userToken}'name'app_register'defaults: ['userToken' => null])]
  58.     public function register(Request $requestSessionService $sessionServiceUserPasswordHasherInterface $hasherTokenStorageInterface $tokenStorageEventDispatcherInterface $eventDispatcherNotificationService $notificationServicestring $userToken null): Response
  59.     {
  60.         if ($this->getUser()) {
  61.             return $this->redirectToRoute('app_account');
  62.         }
  63.         if ($userToken) {
  64.             $sessionService->setData('register_user_token'$userToken);
  65.             return $this->redirectToRoute('app_register');
  66.         }
  67.         $userToken $sessionService->getData('register_user_token');
  68.         if ($userToken === null) {
  69.             throw $this->createNotFoundException();
  70.         }
  71.         $user null;
  72.         if ($userToken) {
  73.             $user $this->em->getRepository(User::class)->findOneByRegisterToken($userToken);
  74.         }
  75.         if (!$user && $userToken) {
  76.             $this->addFlash('danger'$this->translator->trans('app.error.login.expiredToken'));
  77.             $user = new User();
  78.         }
  79.         $registerForm $this->createForm(RegisterFormType::class, $user);
  80.         $registerForm->handleRequest($request);
  81.         if ($registerForm->isSubmitted() && $registerForm->isValid()) {
  82.             /** @var User $user */
  83.             $user $registerForm->getData();
  84.             $user->setPassword($hasher->hashPassword(
  85.                 $user,
  86.                 $user->getPassword()
  87.             ));
  88.             if ($user->getPhone()[0] != '+') {
  89.                 $user->setPhone('+33' substr($user->getPhone(), 1));
  90.             }
  91.             $user->setRoles(array(User::ROLE_USER));
  92.             $user->getBillingAddress()->setUser($user);
  93.             $user->setDeliveryAddress($user->getBillingAddress());
  94.             $user->setRegisterToken(null);
  95.             $this->em->persist($user);
  96.             $this->em->flush();
  97.             $notificationService->sendNewUserEmail($user);
  98.             $token = new UsernamePasswordToken($usernull'main'$user->getRoles());
  99.             $tokenStorage->setToken($token);
  100.             $event = new SecurityEvents();
  101.             $eventDispatcher->dispatch($eventSecurityEvents::INTERACTIVE_LOGIN);
  102.             return $this->redirectToRoute('app_account');
  103.         }
  104.         return $this->render('login/register.html.twig', array(
  105.             'form' => $registerForm->createView()
  106.         ));
  107.     }
  108. }