vendor/dachcom-digital/members/src/MembersBundle/EventListener/Frontend/HeadMetaListener.php line 41

Open in your IDE?
  1. <?php
  2. namespace MembersBundle\EventListener\Frontend;
  3. use MembersBundle\Manager\RestrictionManager;
  4. use MembersBundle\Manager\RestrictionManagerInterface;
  5. use MembersBundle\Restriction\ElementRestriction;
  6. use Pimcore\Bundle\CoreBundle\EventListener\Traits\PimcoreContextAwareTrait;
  7. use Pimcore\Http\Request\Resolver\DocumentResolver as DocumentResolverService;
  8. use Pimcore\Http\Request\Resolver\PimcoreContextResolver;
  9. use Pimcore\Twig\Extension\Templating\HeadMeta;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\HttpKernel\Event\RequestEvent;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. class HeadMetaListener implements EventSubscriberInterface
  14. {
  15.     use PimcoreContextAwareTrait;
  16.     protected DocumentResolverService $documentResolverService;
  17.     protected HeadMeta $headMeta;
  18.     protected RestrictionManagerInterface $restrictionManager;
  19.     public function __construct(
  20.         RestrictionManagerInterface $restrictionManager,
  21.         DocumentResolverService $documentResolverService,
  22.         HeadMeta $headMeta
  23.     ) {
  24.         $this->documentResolverService $documentResolverService;
  25.         $this->headMeta $headMeta;
  26.         $this->restrictionManager $restrictionManager;
  27.     }
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             KernelEvents::REQUEST => ['onKernelRequest', -20//after forbidden route listener!
  32.         ];
  33.     }
  34.     public function onKernelRequest(RequestEvent $event): void
  35.     {
  36.         // just add meta data on master request
  37.         if (!$event->isMainRequest()) {
  38.             return;
  39.         }
  40.         if (!$this->matchesPimcoreContext($event->getRequest(), PimcoreContextResolver::CONTEXT_DEFAULT)) {
  41.             return;
  42.         }
  43.         $groups = ['default'];
  44.         $elementRestriction $event->getRequest()->attributes->get(RestrictionManager::REQUEST_RESTRICTION_STORAGE);
  45.         if ($elementRestriction instanceof ElementRestriction && !empty($elementRestriction->getRestrictionGroups())) {
  46.             $groups $elementRestriction->getRestrictionGroups();
  47.         }
  48.         $this->headMeta->appendName('m:groups'implode(','$groups));
  49.     }
  50. }