Skip to content

Commit 0c280c0

Browse files
committed
Merge branch '4.4' into 5.0
* 4.4: Fixed translations file dumper behavior When set, get secret from config variable [FrameworkBundle] Set the parameter bag as resolved in ContainerLintCommand [SecurityBundle] Fix switch_user provider configuration handling
2 parents ac38677 + 73f845f commit 0c280c0

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

DependencyInjection/Security/Factory/AnonymousFactory.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@ class AnonymousFactory implements SecurityFactoryInterface
2424
public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
2525
{
2626
if (null === $config['secret']) {
27-
$firewall['anonymous']['secret'] = new Parameter('container.build_hash');
27+
$config['secret'] = new Parameter('container.build_hash');
2828
}
2929

3030
$listenerId = 'security.authentication.listener.anonymous.'.$id;
3131
$container
3232
->setDefinition($listenerId, new ChildDefinition('security.authentication.listener.anonymous'))
33-
->replaceArgument(1, $firewall['anonymous']['secret'])
33+
->replaceArgument(1, $config['secret'])
3434
;
3535

3636
$providerId = 'security.authentication.provider.anonymous.'.$id;
3737
$container
3838
->setDefinition($providerId, new ChildDefinition('security.authentication.provider.anonymous'))
39-
->replaceArgument(0, $firewall['anonymous']['secret'])
39+
->replaceArgument(0, $config['secret'])
4040
;
4141

4242
return [$providerId, $listenerId, $defaultEntryPoint];

DependencyInjection/SecurityExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ private function createExceptionListener(ContainerBuilder $container, array $con
676676
return $exceptionListenerId;
677677
}
678678

679-
private function createSwitchUserListener(ContainerBuilder $container, string $id, array $config, string $defaultProvider, bool $stateless): string
679+
private function createSwitchUserListener(ContainerBuilder $container, string $id, array $config, ?string $defaultProvider, bool $stateless): string
680680
{
681681
$userProvider = isset($config['provider']) ? $this->getUserProviderId($config['provider']) : $defaultProvider;
682682

Tests/DependencyInjection/SecurityExtensionTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,30 @@ public function sessionConfigurationProvider()
389389
];
390390
}
391391

392+
public function testSwitchUserWithSeveralDefinedProvidersButNoFirewallRootProviderConfigured()
393+
{
394+
$container = $this->getRawContainer();
395+
$container->loadFromExtension('security', [
396+
'providers' => [
397+
'first' => ['id' => 'foo'],
398+
'second' => ['id' => 'bar'],
399+
],
400+
401+
'firewalls' => [
402+
'foobar' => [
403+
'switch_user' => [
404+
'provider' => 'second',
405+
],
406+
'anonymous' => true,
407+
],
408+
],
409+
]);
410+
411+
$container->compile();
412+
413+
$this->assertEquals(new Reference('security.user.provider.concrete.second'), $container->getDefinition('security.authentication.switchuser_listener.foobar')->getArgument(1));
414+
}
415+
392416
protected function getRawContainer()
393417
{
394418
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)