src/EventSubscriber/SecuritySubscriber.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\FcmFoodSisetuGroup;
  4. use App\Entity\SfGuardUser;
  5. use Doctrine\ORM\EntityManager;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Psr\Log\LoggerInterface;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  10. use Symfony\Component\HttpKernel\KernelEvents;
  11. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  12. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  13. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  14. /**
  15.  * 食事システム用サブスクライバー
  16.  * 
  17.  * adminの場合は全グループを返す
  18.  * 
  19.  * 
  20.  */
  21. class SecuritySubscriber implements EventSubscriberInterface
  22. {
  23.     private $manager;
  24.     private $token;
  25.     private $logger;
  26.     private $checker;
  27.     public function __construct(
  28.         ManagerRegistry $mr
  29.         TokenStorageInterface $token
  30.         AuthorizationCheckerInterface $checker
  31.         LoggerInterface $logger)
  32.     {
  33.         $this->manager $mr;
  34.         $this->token $token;
  35.         $this->logger $logger;
  36.         $this->checker $checker;
  37.     }
  38.     public function onKernelController(ControllerEvent $event)
  39.     {
  40.         if($this->token->getToken() === null)
  41.         {
  42.             return;
  43.         }
  44.         $user $this->token->getToken()->getUser();
  45.         if(!$user instanceof SfGuardUser)
  46.         {
  47.             return;
  48.         }
  49.         /** @var EntityManager $em */
  50.         if(!$this->checker->isGranted('ROLE_ADMIN'))
  51.         {
  52.             return;
  53.         }
  54.         $this->logger->info("admin用にグループ付与処理開始");
  55.         //TODO 全グループを取得
  56.         $em $this->manager->getManagerForClass(FcmFoodSisetuGroup::class);
  57.         SfGuardUser::$foodSisetuGroups $em->getRepository(FcmFoodSisetuGroup::class)->findAll();
  58.     }
  59.     public static function getSubscribedEvents()
  60.     {
  61.         return [
  62.             KernelEvents::CONTROLLER => 'onKernelController',
  63.         ];
  64.     }
  65. }