<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\Acl\EventListener;
use BitBag\OpenMarketplace\Component\Acl\Checker\ResourcePrivilegeCheckerInterface;
use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
final class AclResourceListener
{
public function __construct(
private ResourcePrivilegeCheckerInterface $resourcePrivilegeChecker,
) {
}
public function __invoke(ResourceControllerEvent $resourceControllerEvent): void
{
$resource = $resourceControllerEvent->getSubject();
if (false === $this->resourcePrivilegeChecker->hasPrivilege($resource)) {
throw new AccessDeniedHttpException();
}
}
}