From fb496b38d061b79d0a44090381be3a1b6d96bfd4 Mon Sep 17 00:00:00 2001 From: Dmitrii Date: Wed, 22 Nov 2017 11:51:16 +0200 Subject: [PATCH 1/2] Fixed providerIds is undefined --- .../SecurityBundle/DependencyInjection/SecurityExtension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php index f777ad1d68344..c832feaafb8f5 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php @@ -693,7 +693,7 @@ private function createExceptionListener($container, $config, $id, $defaultEntry private function createSwitchUserListener($container, $id, $config, $defaultProvider, $stateless) { - $userProvider = isset($config['provider']) ? $this->getUserProviderId($config['provider']) : ($defaultProvider ?: $this->getFirstProvider($id, 'switch_user', $providerIds)); + $userProvider = isset($config['provider']) ? $this->getUserProviderId($config['provider']) : $defaultProvider; // in 4.0, ignore the `switch_user.stateless` key if $stateless is `true` if ($stateless && false === $config['stateless']) { From 0269d7a85f2c9b7e34188205014d070074258651 Mon Sep 17 00:00:00 2001 From: Dmitrii Date: Wed, 22 Nov 2017 12:38:39 +0200 Subject: [PATCH 2/2] pass $providerIds to createSwitchUserListener Now it works without specifying provider in the firewall --- .../DependencyInjection/SecurityExtension.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php index c832feaafb8f5..835794f15fdd5 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php @@ -448,7 +448,7 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a // Switch user listener if (isset($firewall['switch_user'])) { $listenerKeys[] = 'switch_user'; - $listeners[] = new Reference($this->createSwitchUserListener($container, $id, $firewall['switch_user'], $defaultProvider, $firewall['stateless'])); + $listeners[] = new Reference($this->createSwitchUserListener($container, $id, $firewall['switch_user'], $defaultProvider, $firewall['stateless'], $providerIds)); } // Access listener @@ -691,9 +691,9 @@ private function createExceptionListener($container, $config, $id, $defaultEntry return $exceptionListenerId; } - private function createSwitchUserListener($container, $id, $config, $defaultProvider, $stateless) + private function createSwitchUserListener($container, $id, $config, $defaultProvider, $stateless, $providerIds) { - $userProvider = isset($config['provider']) ? $this->getUserProviderId($config['provider']) : $defaultProvider; + $userProvider = isset($config['provider']) ? $this->getUserProviderId($config['provider']) : ($defaultProvider ?: $this->getFirstProvider($id, 'switch_user', $providerIds)); // in 4.0, ignore the `switch_user.stateless` key if $stateless is `true` if ($stateless && false === $config['stateless']) {