vendor/sulu/sulu/src/Sulu/Bundle/SecurityBundle/EventListener/PhpcrSecuritySubscriber.php line 50

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Bundle\SecurityBundle\EventListener;
  11. use Sulu\Component\Security\Authorization\AccessControl\DoctrineAccessControlProvider;
  12. use Sulu\Component\Security\Authorization\AccessControl\PhpcrAccessControlProvider;
  13. use Sulu\Component\Security\Event\PermissionUpdateEvent;
  14. use Sulu\Component\Security\Event\SecurityEvents;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. class PhpcrSecuritySubscriber implements EventSubscriberInterface
  17. {
  18.     /**
  19.      * @var PhpcrAccessControlProvider
  20.      */
  21.     private $phpcrAccessControlProvider;
  22.     /**
  23.      * @var DoctrineAccessControlProvider
  24.      */
  25.     private $doctrineAccessControlProvider;
  26.     public function __construct(
  27.         PhpcrAccessControlProvider $phpcrAccessControlProvider,
  28.         DoctrineAccessControlProvider $doctrineAccessControlProvider
  29.     ) {
  30.         $this->phpcrAccessControlProvider $phpcrAccessControlProvider;
  31.         $this->doctrineAccessControlProvider $doctrineAccessControlProvider;
  32.     }
  33.     /**
  34.      * @return array<string, mixed>
  35.      */
  36.     public static function getSubscribedEvents(): array
  37.     {
  38.         return [
  39.             SecurityEvents::PERMISSION_UPDATE => 'handlePermissionUpdate',
  40.         ];
  41.     }
  42.     public function handlePermissionUpdate(PermissionUpdateEvent $event): void
  43.     {
  44.         $type $event->getType();
  45.         $identifier $event->getIdentifier();
  46.         $permissions $event->getPermissions();
  47.         if (!$this->phpcrAccessControlProvider->supports($type)) {
  48.             return;
  49.         }
  50.         // sync permissions stored in phpcr to doctrine to make them usable in doctrine queries and the list builder
  51.         $this->doctrineAccessControlProvider->setPermissions($type$identifier$permissions);
  52.     }
  53. }