Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c924b61

Browse files
author
Robin Chalas
committed
[SecurityBundle] Fix valid provider considered undefined
1 parent c97c6d4 commit c924b61

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -331,10 +331,10 @@ private function createFirewall(ContainerBuilder $container, $id, $firewall, &$a
331331

332332
// Provider id (take the first registered provider if none defined)
333333
if (isset($firewall['provider'])) {
334-
$defaultProvider = $this->getUserProviderId($firewall['provider']);
335-
if (!in_array($defaultProvider, $providerIds, true)) {
334+
if (!$this->isValidProviderName($firewall['provider'], $providerIds)) {
336335
throw new InvalidConfigurationException(sprintf('Invalid firewall "%s": user provider "%s" not found.', $id, $firewall['provider']));
337336
}
337+
$defaultProvider = $providerIds[$firewall]['provider'];
338338
} else {
339339
$defaultProvider = reset($providerIds);
340340
}
@@ -491,10 +491,10 @@ private function createAuthenticationListeners($container, $id, $firewall, &$aut
491491

492492
if (isset($firewall[$key])) {
493493
if (isset($firewall[$key]['provider'])) {
494-
if (!in_array($firewall[$key]['provider'], $providerIds, true)) {
494+
if (!$this->isValidProviderName($firewall[$key]['provider'], $providerIds)) {
495495
throw new InvalidConfigurationException(sprintf('Invalid firewall "%s": user provider "%s" not found.', $id, $firewall[$key]['provider']));
496496
}
497-
$userProvider = $this->getUserProviderId($firewall[$key]['provider']);
497+
$userProvider = $providerIds[$firewall[$key]['provider']];
498498
} else {
499499
$userProvider = $defaultProvider;
500500
}
@@ -596,7 +596,7 @@ private function createUserProviders($config, ContainerBuilder $container)
596596
$providerIds = array();
597597
foreach ($config['providers'] as $name => $provider) {
598598
$id = $this->createUserDaoProvider($name, $provider, $container);
599-
$providerIds[] = $id;
599+
$providerIds[$name] = $id;
600600
}
601601

602602
return $providerIds;
@@ -647,6 +647,11 @@ private function getUserProviderId($name)
647647
return 'security.user.provider.concrete.'.strtolower($name);
648648
}
649649

650+
private function isValidProviderName($providerName, array $allowedProviders)
651+
{
652+
return isset($allowedProviders[$providerName]) || isset($allowedProviders[str_replace('-', '_', $providerName)]);
653+
}
654+
650655
private function createExceptionListener($container, $config, $id, $defaultEntryPoint, $stateless)
651656
{
652657
$exceptionListenerId = 'security.exception_listener.'.$id;

0 commit comments

Comments
 (0)