vendor/ibexa/page-builder/src/lib/Security/EventListener/SecurityListener.php line 42

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\PageBuilder\Security\EventListener;
  8. use Ibexa\Contracts\Core\Repository\PermissionResolver;
  9. use Ibexa\Core\MVC\Symfony\Security\UserInterface as IbexaUser;
  10. use Ibexa\PageBuilder\Security\EditorialMode\PostAuthenticationGuardToken;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent as BaseInteractiveLoginEvent;
  13. use Symfony\Component\Security\Http\SecurityEvents;
  14. /**
  15.  * This security listener listens to security.interactive_login event to:
  16.  *  - Set current user reference if user is an instance of an Ibexa user.
  17.  */
  18. final class SecurityListener implements EventSubscriberInterface
  19. {
  20.     /** @var \Ibexa\Contracts\Core\Repository\PermissionResolver */
  21.     private $permissionResolver;
  22.     public function __construct(
  23.         PermissionResolver $permissionResolver
  24.     ) {
  25.         $this->permissionResolver $permissionResolver;
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             SecurityEvents::INTERACTIVE_LOGIN => [
  31.                 ['onInteractiveLogin'10],
  32.             ],
  33.         ];
  34.     }
  35.     public function onInteractiveLogin(BaseInteractiveLoginEvent $event): void
  36.     {
  37.         $token $event->getAuthenticationToken();
  38.         if (!$token instanceof PostAuthenticationGuardToken) {
  39.             return;
  40.         }
  41.         $user $event->getAuthenticationToken()->getUser();
  42.         if ($user instanceof IbexaUser) {
  43.             $this->permissionResolver->setCurrentUserReference($user->getAPIUser());
  44.         }
  45.     }
  46. }
  47. class_alias(SecurityListener::class, 'EzSystems\EzPlatformPageBuilder\Security\EventListener\SecurityListener');