src/EventSubscriber/AuthorizationSuccessSubscriber.php line 27

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\EventSubscriber;
  3. use App\Entity\User;
  4. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  5. use Lexik\Bundle\JWTAuthenticationBundle\Events;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Security\Core\Security;
  8. class AuthorizationSuccessSubscriber implements EventSubscriberInterface
  9. {
  10.     private Security $security;
  11.     public function __construct(Security $security)
  12.     {
  13.         $this->security $security;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             Events::AUTHENTICATION_SUCCESS => ['addDataToEvent'10],
  19.         ];
  20.     }
  21.     public function addDataToEvent(AuthenticationSuccessEvent $event): void
  22.     {
  23.         $user $event->getUser();
  24.         $data $event->getData();
  25.         if (!$user instanceof User) {
  26.             return;
  27.         }
  28.         $data['id'] = $user->getSlug();
  29.         $data['isAdmin'] = $this->security->isGranted('ROLE_ADMIN');
  30.         $data['isManager'] = $this->security->isGranted('ROLE_MASTER_MANAGER');
  31.         $data['isMasterManager'] = $this->security->isGranted('ROLE_MASTER_MANAGER');
  32.         $data['isDeveloper'] = $this->security->isGranted('ROLE_DEVELOPER');
  33.         $event->setData($data);
  34.     }
  35. }