src/Doctrine/Extensions/StoreFilterExtension.php line 53

  1. <?php
  2. // src/Doctrine/Extensions/GlobalHintExtension.php
  3. namespace App\Doctrine\Extensions;
  4. use App\Entity\User;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Bundle\SecurityBundle\Security;
  7. use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  10. #[AsEventListener(eventRequestEvent::class, method'onKernelRequest'priority: -100)]
  11. #[AsEventListener(eventExceptionEvent::class, method'onKernelException')]
  12. class StoreFilterExtension
  13. {
  14.     public function __construct(
  15.         private EntityManagerInterface $em,
  16.         private Security $security
  17.     ) {}
  18.     public static function getSubscribedEvents(): array
  19.     {
  20.         return [
  21.             RequestEvent::class => 'onKernelRequest',
  22.         ];
  23.     }
  24.     public function onKernelRequest(RequestEvent $event): void
  25.     {
  26.         if (!$event->isMainRequest()) {
  27.             return;
  28.         }
  29.         $user $this->security->getUser();
  30.         
  31.         
  32.         if (!$user instanceof User || !$user->getStore() instanceof \App\Flexynity\ShopBundle\Entity\Store\Store || in_array("ROLE_ADMIN",$user->getRoles()) ) {
  33.             return;
  34.         }
  35.         
  36.         if(!$this->em->getFilters()->isEnabled("store_filter" ) ){
  37.             $this->em->getFilters()->enable('store_filter')->setParameter('store_id'$user->getStore()->getId());
  38.         }
  39.         
  40.         
  41.     }
  42.     public function onKernelException(ExceptionEvent $event)
  43.     {
  44.         // Handle kernel exception
  45.     }
  46. }