8000 bug #12811 Configure firewall's kernel exception listener with config… · symfony/symfony@2e65c3f · GitHub
[go: up one dir, main page]

Skip to content

Commit 2e65c3f

Browse files
committed
bug #12811 Configure firewall's kernel exception listener with configured entry point or a default entry point (rjkip)
This PR was squashed before being merged into the 2.3 branch (closes #12811). Discussion ---------- Configure firewall's kernel exception listener with configured entry point or a default entry point | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | when relying on buggy behaviour | Deprecations? | no | Tests pass? | yes | Fixed tickets | #12581 #12801 | License | MIT | Doc PR | — The #12296 PR introduced a bug where the firewall's exception listener was sometimes configured with the default entry point returned by `SecurityExtension#createAuthenticationListeners()`. These changes add a regression test and make the configured entry point (if any) always take precedence over a default entry point. If someone can confirm this fix, it would have my preference merging this over reverting #12296 for Symfony 2.6.1. Commits ------- b122262 Configure firewall's kernel exception listener with configured entry point or a default entry point
2 parents b604b0a + b122262 commit 2e65c3f

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -334,10 +334,10 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a
334334
}
335335

336336
// Determine default entry point
337-
$defaultEntryPoint = isset($firewall['entry_point']) ? $firewall['entry_point'] : null;
337+
$configuredEntryPoint = isset($firewall['entry_point']) ? $firewall['entry_point'] : null;
338338

339339
// Authentication listeners
340-
list($authListeners, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $authenticationProviders, $defaultProvider, $defaultEntryPoint);
340+
list($authListeners, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $authenticationProviders, $defaultProvider, $configuredEntryPoint);
341341

342342
$listeners = array_merge($listeners, $authListeners);
343343

@@ -350,7 +350,7 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a
350350
$listeners[] = new Reference('security.access_listener');
351351

352352
// Exception listener
353-
$exceptionListener = new Reference($this->createExceptionListener($container, $firewall, $id, $defaultEntryPoint));
353+
$exceptionListener = new Reference($this->createExceptionListener($container, $firewall, $id, $configuredEntryPoint ?: $defaultEntryPoint));
354354

355355
return array($matcher, $listeners, $exceptionListener);
356356
}

src/Symfony/Bundle/SecurityBundle/Tests/Functional/FirewallEntryPointTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ public function testItUsesTheConfiguredEntryPointWhenUsingUnknownCredentials()
3535
);
3636
}
3737

38+
public function testItUsesTheConfiguredEntryPointFromTheExceptionListenerWithFormLoginAndNoCredentials()
39+
{
40+
$client = $this->createClient(array('test_case' => 'FirewallEntryPoint', 'root_config' => 'config_form_login.yml'));
41+
$client->insulate();
42+
43+
$client->request('GET', '/secure/resource');
44+
45+
$this->assertEquals(
46+
EntryPointStub::RESPONSE_TEXT,
47+
$client->getResponse()->getContent(),
48+
"Custom entry point wasn't started"
49+
);
50+
}
51+
3852
protected function setUp()
3953
{
4054
parent::setUp();
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
imports:
2+
- { resource: ./config.yml }
3+
4+
security:
5+
firewalls:
6+
secure:
7+
pattern: ^/
8+
form_login:
9+
check_path: /login_check

0 commit comments

Comments
 (0)
0