Skip to content

Commit a80ca20

Browse files
Merge branch '3.4' into 4.1
* 3.4: [travis][appveyor] use symfony/flex to accelerate builds Add missing stderr redirection clean up unused code [Filesystem] Add test to prevent regression when using array|resource with dumpFile [Security] Call AccessListener after LogoutListener
2 parents e963127 + e29c110 commit a80ca20

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

Firewall.php

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
1717
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
1818
use Symfony\Component\HttpKernel\KernelEvents;
19+
use Symfony\Component\Security\Http\Firewall\AccessListener;
1920

2021
/**
2122
* Firewall uses a FirewallMap to register security listeners for the given
@@ -49,20 +50,31 @@ public function onKernelRequest(GetResponseEvent $event)
4950
// register listeners for this firewall
5051
$listeners = $this->map->getListeners($event->getRequest());
5152

52-
$authenticationListeners = $listeners[0];
53-
$exceptionListener = $listeners[1];
54-
$logoutListener = isset($listeners[2]) ? $listeners[2] : null;
53+
$accessListener = null;
54+
$authenticationListeners = array();
5555

56-
if (null !== $exceptionListener) {
56+
foreach ($listeners[0] as $listener) {
57+
if ($listener instanceof AccessListener) {
58+
$accessListener = $listener;
59+
} else {
60+
$authenticationListeners[] = $listener;
61+
}
62+
}
63+
64+
if (null !== $exceptionListener = $listeners[1]) {
5765
$this->exceptionListeners[$event->getRequest()] = $exceptionListener;
5866
$exceptionListener->register($this->dispatcher);
5967
}
6068

61-
$this->handleRequest($event, $authenticationListeners);
69+
if (null !== $logoutListener = isset($listeners[2]) ? $listeners[2] : null) {
70+
$authenticationListeners[] = $logoutListener;
71+
}
6272

63-
if (null !== $logoutListener) {
64-
$logoutListener->handle($event);
73+
if (null !== $accessListener) {
74+
$authenticationListeners[] = $accessListener;
6575
}
76+
77+
$this->handleRequest($event, $authenticationListeners);
6678
}
6779

6880
public function onKernelFinishRequest(FinishRequestEvent $event)

Tests/FirewallTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public function testOnKernelRequestStopsWhenThereIsAResponse()
7979
->getMock()
8080
;
8181
$event
82-
->expects($this->once())
82+
->expects($this->at(0))
8383
->method('hasResponse')
8484
->will($this->returnValue(true))
8585
;

0 commit comments

Comments
 (0)