Skip to content

Commit 96e98d3

Browse files
committed
Merge branch '5.4' into 6.0
* 5.4: (27 commits) feat: add completion for DebugAutowiring search argument [Routing] Add support for aliasing routes [DependencyInjection] only allow `ReflectionNamedType` for `ServiceSubscriberTrait` Fix CS [Console] Open CompleteCommand for custom outputs [Intl] Update the ICU data to 70.1 [Messenger] Add completion for failed messages commands. Fix tests Fixing missing full_stack variable that's needed by toolbar.html.twig [PropertyInfo] Bump phpstan/phpdoc-parser [Security] Backport type fixes [VarExporter] escape unicode chars involved in directionality [Framework] Add completion to debug:container [Messenger] Add completion to command messenger:consume [Intl] Update the ICU data to 70.1 Fix more generic types Default access_decision_manager.strategy option with merge. Fix typos Update validators.ca.xlf Add missing Validator translations for Estonian ... Signed-off-by: Alexander M. Turek <me@derrabus.de>
2 parents f4e600a + 8db3e39 commit 96e98d3

File tree

4 files changed

+28
-26
lines changed

4 files changed

+28
-26
lines changed

DependencyInjection/MainConfiguration.php

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class MainConfiguration implements ConfigurationInterface
4040
private array $userProviderFactories;
4141

4242
/**
43-
* @param array<int, AuthenticatorFactoryInterface> $factories
43+
* @param array<array-key, AuthenticatorFactoryInterface> $factories
4444
*/
4545
public function __construct(array $factories, array $userProviderFactories)
4646
{
@@ -57,28 +57,6 @@ public function getConfigTreeBuilder(): TreeBuilder
5757
$rootNode = $tb->getRootNode();
5858

5959
$rootNode
60-
->beforeNormalization()
61-
->ifTrue(function ($v) {
62-
if (!isset($v['access_decision_manager'])) {
63-
return true;
64-
}
65-
66-
if (!isset($v['access_decision_manager']['strategy'])
67-
&& !isset($v['access_decision_manager']['service'])
68-
&& !isset($v['access_decision_manager']['strategy_service'])
69-
&& !isset($v['access_decision_manager']['strategy-service'])
70-
) {
71-
return true;
72-
}
73-
74-
return false;
75-
})
76-
->then(function ($v) {
77-
$v['access_decision_manager']['strategy'] = self::STRATEGY_AFFIRMATIVE;
78-
79-
return $v;
80-
})
81-
->end()
8260
->children()
8361
->scalarNode('access_denied_url')->defaultNull()->example('/foo/error403')->end()
8462
->enumNode('session_fixation_strategy')
@@ -188,7 +166,7 @@ private function addAccessControlSection(ArrayNodeDefinition $rootNode)
188166
}
189167

190168
/**
191-
* @param array<int, AuthenticatorFactoryInterface> $factories
169+
* @param array<array-key, AuthenticatorFactoryInterface> $factories
192170
*/
193171
private function addFirewallsSection(ArrayNodeDefinition $rootNode, array $factories)
194172
{

DependencyInjection/SecurityExtension.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class SecurityExtension extends Extension implements PrependExtensionInterface
5858
private array $requestMatchers = [];
5959
private array $expressions = [];
6060
private array $contextListeners = [];
61-
/** @var list<array{0: int, 1: AuthenticatorFactoryInterface}> */
61+
/** @var list<array{int, AuthenticatorFactoryInterface}> */
6262
private array $factories = [];
6363
/** @var AuthenticatorFactoryInterface[] */
6464
private array $sortedFactories = [];
@@ -126,7 +126,7 @@ public function load(array $configs, ContainerBuilder $container)
126126
$container
127127
->getDefinition('security.access.decision_manager')
128128
->addArgument($this->createStrategyDefinition(
129-
$config['access_decision_manager']['strategy'],
129+
$config['access_decision_manager']['strategy'] ?? MainConfiguration::STRATEGY_AFFIRMATIVE,
130130
$config['access_decision_manager']['allow_if_all_abstain'],
131131
$config['access_decision_manager']['allow_if_equal_granted_denied']
132132
));

Security/FirewallContext.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ class FirewallContext
2727
private ?LogoutListener $logoutListener;
2828
private ?FirewallConfig $config;
2929

30+
/**
31+
* @param iterable<mixed, callable> $listeners
32+
*/
3033
public function __construct(iterable $listeners, ExceptionListener $exceptionListener = null, LogoutListener $logoutListener = null, FirewallConfig $config = null)
3134
{
3235
$this->listeners = $listeners;
@@ -40,6 +43,9 @@ public function getConfig()
4043
return $this->config;
4144
}
4245

46+
/**
47+
* @return iterable<mixed, callable>
48+
*/
4349
public function getListeners(): iterable
4450
{
4551
return $this->listeners;

Tests/DependencyInjection/MainConfigurationTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,24 @@ public function testUserCheckers()
115115
$this->assertEquals('app.henk_checker', $processedConfig['firewalls']['stub']['user_checker']);
116116
}
117117

118+
public function testConfigMergeWithAccessDecisionManager()
119+
{
120+
$config = [
121+
'access_decision_manager' => [
122+
'strategy' => MainConfiguration::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(MainConfiguration::STRATEGY_UNANIMOUS, $processedConfig['access_decision_manager']['strategy']);
134+
}
135+
118136
public function testFirewalls()
119137
{
120138
$factory = $this->createMock(AuthenticatorFactoryInterface::class);

0 commit comments

Comments
 (0)