src/Component/Acl/EventListener/AclListener.php line 18

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Acl\EventListener;
  4. use BitBag\OpenMarketplace\Component\Acl\Checker\PrivilegeCheckerInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  7. final class AclListener
  8. {
  9.     public function __construct(
  10.         private PrivilegeCheckerInterface $privilegeChecker,
  11.     ) {
  12.     }
  13.     public function __invoke(RequestEvent $event): void
  14.     {
  15.         if (false === $event->isMainRequest()) {
  16.             return;
  17.         }
  18.         $route $event->getRequest()->attributes->get('_route');
  19.         if (false === $this->privilegeChecker->hasPrivilege($route)) {
  20.             throw new AccessDeniedHttpException();
  21.         }
  22.     }
  23. }