src/EventListener/BeforeRequestEventSubscriber.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Doctrine\ORM\EntityManager;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  8. class BeforeRequestEventSubscriber implements EventSubscriberInterface
  9. {
  10. public function __construct(protected EntityManager $em, protected TokenStorageInterface $tokenStorage) {}
  11. public function onKernelRequest(RequestEvent $event)
  12. {
  13. $this->em->getFilters()->enable('AssignmentFutureOnlyFilter');
  14. $this->em->getFilters()->enable('AssignmentNotInactiveFilter');
  15. $this->em->getFilters()->enable('VesselAvailableOnlyFilter');
  16. $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
  17. if ($user) {
  18. $own_only_filter = $this->em->getFilters()->enable('OwnOnlyFilter');
  19. $own_only_filter->setParameter('userid', $user->getId());
  20. $own_only_filter->setParameter('is_admin', in_array('ROLE_ADMIN', $user->getRoles()));
  21. }
  22. }
  23. /**
  24. * @return array<string, mixed>
  25. */
  26. public static function getSubscribedEvents(): array
  27. {
  28. return [KernelEvents::REQUEST => 'onKernelRequest'];
  29. }
  30. }