Skip to content

Commit b11c84c

Browse files
committed
Merge branch '4.4' into 5.3
* 4.4: Default access_decision_manager.strategy option with merge.
2 parents faf6ee4 + 1cb6934 commit b11c84c

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

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

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -48,24 +48,6 @@ public function getConfigTreeBuilder()
4848
$rootNode = $tb->getRootNode();
4949

5050
$rootNode
51-
->beforeNormalization()
52-
->ifTrue(function ($v) {
53-
if (!isset($v['access_decision_manager'])) {
54-
return true;
55-
}
56-
57-
if (!isset($v['access_decision_manager']['strategy']) && !isset($v['access_decision_manager']['service'])) {
58-
return true;
59-
}
60-
61-
return false;
62-
})
63-
->then(function ($v) {
64-
$v['access_decision_manager']['strategy'] = AccessDecisionManager::STRATEGY_AFFIRMATIVE;
65-
66-
return $v;
67-
})
68-
->end()
6951
->beforeNormalization()
7052
->ifTrue(function ($v) {
7153
if ($v['encoders'] ?? false) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
use Symfony\Component\PasswordHasher\Hasher\Pbkdf2PasswordHasher;
4040
use Symfony\Component\PasswordHasher\Hasher\PlaintextPasswordHasher;
4141
use Symfony\Component\PasswordHasher\Hasher\SodiumPasswordHasher;
42+
use Symfony\Component\Security\Core\Authorization\AccessDecisionManager;
4243
use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
4344
use Symfony\Component\Security\Core\Encoder\NativePasswordEncoder;
4445
use Symfony\Component\Security\Core\Encoder\SodiumPasswordEncoder;
@@ -163,7 +164,7 @@ public function load(array $configs, ContainerBuilder $container)
163164
} else {
164165
$container
165166
->getDefinition('security.access.decision_manager')
166-
->addArgument($config['access_decision_manager']['strategy'])
167+
->addArgument($config['access_decision_manager']['strategy'] ?? AccessDecisionManager::STRATEGY_AFFIRMATIVE)
167168
->addArgument($config['access_decision_manager']['allow_if_all_abstain'])
168169
->addArgument($config['access_decision_manager']['allow_if_equal_granted_denied']);
169170
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Bundle\SecurityBundle\DependencyInjection\MainConfiguration;
1616
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
1717
use Symfony\Component\Config\Definition\Processor;
18+
use Symfony\Component\Security\Core\Authorization\AccessDecisionManager;
1819

1920
class MainConfigurationTest extends TestCase
2021
{
@@ -113,4 +114,22 @@ public function testUserCheckers()
113114

114115
$this->assertEquals('app.henk_checker', $processedConfig['firewalls']['stub']['user_checker']);
115116
}
117+
118+
public function testConfigMergeWithAccessDecisionManager()
119+
{
120+
$config = [
121+
'access_decision_manager' => [
122+
'strategy' => AccessDecisionManager::STRATEGY_UNANIMOUS,
123+
],
124+
];
125+
$config = array_merge(static::$minimalConfig, $config);
126+
127+
$config2 = [];
128+
129+
$processor = new Processor();
130+
$configuration = new MainConfiguration([], []);
131+
$processedConfig = $processor->processConfiguration($configuration, [$config, $config2]);
132+
133+
$this->assertSame(AccessDecisionManager::STRATEGY_UNANIMOUS, $processedConfig['access_decision_manager']['strategy']);
134+
}
116135
}

0 commit comments

Comments
 (0)