src/Doctrine/Extensions/StoreFilterExtension.php line 53
<?php
// src/Doctrine/Extensions/GlobalHintExtension.php
namespace App\Doctrine\Extensions;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
#[AsEventListener(event: RequestEvent::class, method: 'onKernelRequest', priority: -100)]
#[AsEventListener(event: ExceptionEvent::class, method: 'onKernelException')]
class StoreFilterExtension
{
public function __construct(
private EntityManagerInterface $em,
private Security $security
) {}
public static function getSubscribedEvents(): array
{
return [
RequestEvent::class => 'onKernelRequest',
];
}
public function onKernelRequest(RequestEvent $event): void
{
if (!$event->isMainRequest()) {
return;
}
$user = $this->security->getUser();
if (!$user instanceof User || !$user->getStore() instanceof \App\Flexynity\ShopBundle\Entity\Store\Store || in_array("ROLE_ADMIN",$user->getRoles()) ) {
return;
}
if(!$this->em->getFilters()->isEnabled("store_filter" ) ){
$this->em->getFilters()->enable('store_filter')->setParameter('store_id', $user->getStore()->getId());
}
}
public function onKernelException(ExceptionEvent $event)
{
// Handle kernel exception
}
}