src/EventListener/AuthenticationListener.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Repository\UserRepository;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  6. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  7. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  8. class AuthenticationListener
  9. {
  10.     private TokenStorageInterface $tokenStorage;
  11.     private AuthorizationCheckerInterface $authorizationChecker;
  12.     private EntityManagerInterface $entityManagerInterface;
  13.     private UserRepository $userRepository;
  14.     public function __construct(TokenStorageInterface $tokenStorageAuthorizationCheckerInterface $authorizationCheckerEntityManagerInterface $entityManagerInterfaceUserRepository $userRepository)
  15.     {
  16.         $this->tokenStorage $tokenStorage;
  17.         $this->authorizationChecker $authorizationChecker;
  18.         $this->entityManagerInterface $entityManagerInterface;
  19.         $this->userRepository $userRepository;
  20.     }
  21.     public function onAuthenticationSuccess(InteractiveLoginEvent $event)
  22.     {
  23.         // Get the authenticated user
  24.         $user $this->tokenStorage->getToken()->getUser();
  25.         if ($this->authorizationChecker->isGranted('ROLE_SUPER_ADMIN')){
  26.             $roles[] = 'ROLE_SUPER_ADMIN';
  27.         };
  28.         if ($this->authorizationChecker->isGranted('ROLE_KEEPER')){
  29.             $roles[] = 'ROLE_KEEPER';
  30.         };
  31.         if ($this->authorizationChecker->isGranted('ROLE_SHOP_ADMIN')){
  32.             $roles[] = 'ROLE_SHOP_ADMIN';
  33.         };
  34.         if ($this->authorizationChecker->isGranted('ROLE_PARTNER_USER')){
  35.             $roles[] = 'ROLE_PARTNER_USER';
  36.         };
  37.         //$user = $this->userRepository->find($user->getId());
  38.         //dd($user->getRoles());
  39.         // Update the last login date
  40.         //dd($roles);
  41.         $user->setRoles($roles);
  42.         $user->setLastLogin(new \DateTime());
  43.         $this->entityManagerInterface->flush();
  44.     }
  45. }