vendor/symfony/security-bundle/EventListener/FirewallListener.php line 39
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Bundle\SecurityBundle\EventListener;
- use Symfony\Bundle\SecurityBundle\Security\FirewallMap;
- use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
- use Symfony\Component\HttpKernel\Event\RequestEvent;
- use Symfony\Component\HttpKernel\KernelEvents;
- use Symfony\Component\Security\Http\Firewall;
- use Symfony\Component\Security\Http\FirewallMapInterface;
- use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator;
- use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
- /**
- * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
- */
- class FirewallListener extends Firewall
- {
- private FirewallMapInterface $map;
- private LogoutUrlGenerator $logoutUrlGenerator;
- public function __construct(FirewallMapInterface $map, EventDispatcherInterface $dispatcher, LogoutUrlGenerator $logoutUrlGenerator)
- {
- $this->map = $map;
- $this->logoutUrlGenerator = $logoutUrlGenerator;
- parent::__construct($map, $dispatcher);
- }
- public function configureLogoutUrlGenerator(RequestEvent $event)
- {
- if (!$event->isMainRequest()) {
- return;
- }
- if ($this->map instanceof FirewallMap && $config = $this->map->getFirewallConfig($event->getRequest())) {
- $this->logoutUrlGenerator->setCurrentFirewall($config->getName(), $config->getContext());
- }
- }
- public function onKernelFinishRequest(FinishRequestEvent $event)
- {
- if ($event->isMainRequest()) {
- $this->logoutUrlGenerator->setCurrentFirewall(null);
- }
- parent::onKernelFinishRequest($event);
- }
- public static function getSubscribedEvents(): array
- {
- return [
- KernelEvents::REQUEST => [
- ['configureLogoutUrlGenerator', 8],
- ['onKernelRequest', 8],
- ],
- KernelEvents::FINISH_REQUEST => 'onKernelFinishRequest',
- ];
- }
- }