Skip to content

Commit 60f6e91

Browse files
committed
bug symfony#28793 [SecurityBundle] do not override custom access decision configs (xabbuh)
This PR was merged into the 3.4 branch. Discussion ---------- [SecurityBundle] do not override custom access decision configs | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | symfony#28766 | License | MIT | Doc PR | Commits ------- 7743146 do not override custom access decision configs
2 parents f9aac64 + 7743146 commit 60f6e91

File tree

5 files changed

+63
-5
lines changed

5 files changed

+63
-5
lines changed

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,7 @@ public function getConfigTreeBuilder()
6666
return false;
6767
})
6868
->then(function ($v) {
69-
$v['access_decision_manager'] = array(
70-
'strategy' => AccessDecisionManager::STRATEGY_AFFIRMATIVE,
71-
);
69+
$v['access_decision_manager']['strategy'] = AccessDecisionManager::STRATEGY_AFFIRMATIVE;
7270

7371
return $v;
7472
})

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/CompleteConfigurationTest.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -555,11 +555,22 @@ public function testCustomAccessDecisionManagerService()
555555

556556
/**
557557
* @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
558-
* @expectedExceptionMessage "strategy" and "service" cannot be used together.
558+
* @expectedExceptionMessage Invalid configuration for path "security.access_decision_manager": "strategy" and "service" cannot be used together.
559559
*/
560560
public function testAccessDecisionManagerServiceAndStrategyCannotBeUsedAtTheSameTime()
561561
{
562-
$container = $this->getContainer('access_decision_manager_service_and_strategy');
562+
$this->getContainer('access_decision_manager_service_and_strategy');
563+
}
564+
565+
public function testAccessDecisionManagerOptionsAreNotOverriddenByImplicitStrategy()
566+
{
567+
$container = $this->getContainer('access_decision_manager_customized_config');
568+
569+
$accessDecisionManagerDefinition = $container->getDefinition('security.access.decision_manager');
570+
571+
$this->assertSame(AccessDecisionManager::STRATEGY_AFFIRMATIVE, $accessDecisionManagerDefinition->getArgument(1));
572+
$this->assertTrue($accessDecisionManagerDefinition->getArgument(2));
573+
$this->assertFalse($accessDecisionManagerDefinition->getArgument(3));
563574
}
564575

565576
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
$container->loadFromExtension('security', array(
4+
'access_decision_manager' => array(
5+
'allow_if_all_abstain' => true,
6+
'allow_if_equal_granted_denied' => false,
7+
),
8+
'providers' => array(
9+
'default' => array(
10+
'memory' => array(
11+
'users' => array(
12+
'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER'),
13+
),
14+
),
15+
),
16+
),
17+
'firewalls' => array(
18+
'simple' => array('pattern' => '/login', 'security' => false),
19+
),
20+
));
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<srv:container xmlns="http://symfony.com/schema/dic/security"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:srv="http://symfony.com/schema/dic/services"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<config>
8+
<access-decision-manager allow-if-all-abstain="true" allow-if-equal-granted-denied="false" />
9+
10+
<provider name="default">
11+
<memory>
12+
<user name="foo" password="foo" roles="ROLE_USER" />
13+
</memory>
14+
</provider>
15+
16+
<firewall name="simple" pattern="/login" security="false" />
17+
</config>
18+
</srv:container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
security:
2+
access_decision_manager:
3+
allow_if_all_abstain: true
4+
allow_if_equal_granted_denied: false
5+
providers:
6+
default:
7+
memory:
8+
users:
9+
foo: { password: foo, roles: ROLE_USER }
10+
firewalls:
11+
simple: { pattern: /login, security: false }

0 commit comments

Comments
 (0)