[Security] removed 'security.authentication_provider' tag
This commit is contained in:
parent
9e6fc0a11e
commit
bc283f1a66
@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Compiler;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Reference;
|
||||
|
||||
class AddAuthenticationProvidersPass implements CompilerPassInterface
|
||||
{
|
||||
public function process(ContainerBuilder $container)
|
||||
{
|
||||
if (!$container->hasDefinition('security.authentication.manager')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$providers = array();
|
||||
foreach ($container->findTaggedServiceIds('security.authentication_provider') as $id => $attributes) {
|
||||
$providers[] = new Reference($id);
|
||||
}
|
||||
|
||||
$container
|
||||
->getDefinition('security.authentication.manager')
|
||||
->setArguments(array($providers))
|
||||
;
|
||||
}
|
||||
}
|
@ -159,7 +159,7 @@ class Configuration
|
||||
->prototype('scalar')->end()
|
||||
->end()
|
||||
->end()
|
||||
->booleanNode('anonymous')->end()
|
||||
->booleanNode('anonymous')->defaultFalse()->end()
|
||||
->arrayNode('switch_user')
|
||||
->scalarNode('provider')->end()
|
||||
->scalarNode('parameter')->defaultValue('_switch_user')->end()
|
||||
|
@ -42,10 +42,6 @@ abstract class AbstractFactory implements SecurityFactoryInterface
|
||||
{
|
||||
// authentication provider
|
||||
$authProviderId = $this->createAuthProvider($container, $id, $config, $userProviderId);
|
||||
$container
|
||||
->getDefinition($authProviderId)
|
||||
->addTag('security.authentication_provider')
|
||||
;
|
||||
|
||||
// authentication listener
|
||||
$listenerId = $this->createListener($container, $id, $config, $userProviderId);
|
||||
|
@ -31,7 +31,6 @@ class HttpBasicFactory implements SecurityFactoryInterface
|
||||
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
|
||||
->setArgument(0, new Reference($userProvider))
|
||||
->setArgument(2, $id)
|
||||
->addTag('security.authentication_provider')
|
||||
;
|
||||
|
||||
// listener
|
||||
|
@ -31,7 +31,6 @@ class HttpDigestFactory implements SecurityFactoryInterface
|
||||
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
|
||||
->setArgument(0, new Reference($userProvider))
|
||||
->setArgument(2, $id)
|
||||
->addTag('security.authentication_provider')
|
||||
;
|
||||
|
||||
// listener
|
||||
|
@ -31,7 +31,6 @@ class RememberMeFactory implements SecurityFactoryInterface
|
||||
->setDefinition($authProviderId, new DefinitionDecorator('security.authentication.provider.rememberme'))
|
||||
->addArgument($config['key'])
|
||||
->addArgument($id)
|
||||
->addTag('security.authentication_provider')
|
||||
;
|
||||
|
||||
// remember me services
|
||||
|
@ -32,7 +32,6 @@ class X509Factory implements SecurityFactoryInterface
|
||||
->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.pre_authenticated'))
|
||||
->setArgument(0, new Reference($userProvider))
|
||||
->addArgument($id)
|
||||
->addTag('security.authentication_provider')
|
||||
;
|
||||
|
||||
// listener
|
||||
|
@ -175,9 +175,9 @@ class SecurityExtension extends Extension
|
||||
|
||||
// load firewall map
|
||||
$mapDef = $container->getDefinition('security.firewall.map');
|
||||
$map = array();
|
||||
$map = $authenticationProviders = array();
|
||||
foreach ($firewalls as $name => $firewall) {
|
||||
list($matcher, $listeners, $exceptionListener) = $this->createFirewall($container, $name, $firewall, $providerIds, $factories);
|
||||
list($matcher, $listeners, $exceptionListener) = $this->createFirewall($container, $name, $firewall, $authenticationProviders, $providerIds, $factories);
|
||||
|
||||
$contextId = 'security.firewall.map.context.'.$name;
|
||||
$context = $container->setDefinition($contextId, new DefinitionDecorator('security.firewall.context'));
|
||||
@ -188,9 +188,18 @@ class SecurityExtension extends Extension
|
||||
$map[$contextId] = $matcher;
|
||||
}
|
||||
$mapDef->setArgument(1, $map);
|
||||
|
||||
// add authentication providers to authentication manager
|
||||
$authenticationProviders = array_map(function($id) {
|
||||
return new Reference($id);
|
||||
}, array_values(array_unique($authenticationProviders)));
|
||||
$container
|
||||
->getDefinition('security.authentication.manager')
|
||||
->setArgument(0, $authenticationProviders)
|
||||
;
|
||||
}
|
||||
|
||||
protected function createFirewall(ContainerBuilder $container, $id, $firewall, $providerIds, array $factories)
|
||||
protected function createFirewall(ContainerBuilder $container, $id, $firewall, &$authenticationProviders, $providerIds, array $factories)
|
||||
{
|
||||
// Matcher
|
||||
$i = 0;
|
||||
@ -259,7 +268,7 @@ class SecurityExtension extends Extension
|
||||
}
|
||||
|
||||
// Authentication listeners
|
||||
list($authListeners, $providers, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $defaultProvider, $factories);
|
||||
list($authListeners, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $authenticationProviders, $defaultProvider, $factories);
|
||||
|
||||
$listeners = array_merge($listeners, $authListeners);
|
||||
|
||||
@ -295,10 +304,9 @@ class SecurityExtension extends Extension
|
||||
return $this->contextListeners[$contextKey] = $listenerId;
|
||||
}
|
||||
|
||||
protected function createAuthenticationListeners($container, $id, $firewall, $defaultProvider, array $factories)
|
||||
protected function createAuthenticationListeners($container, $id, $firewall, &$authenticationProviders, $defaultProvider, array $factories)
|
||||
{
|
||||
$listeners = array();
|
||||
$providers = array();
|
||||
$hasListeners = false;
|
||||
$defaultEntryPoint = null;
|
||||
|
||||
@ -312,7 +320,7 @@ class SecurityExtension extends Extension
|
||||
list($provider, $listenerId, $defaultEntryPoint) = $factory->create($container, $id, $firewall[$key], $userProvider, $defaultEntryPoint);
|
||||
|
||||
$listeners[] = new Reference($listenerId);
|
||||
$providers[] = new Reference($provider);
|
||||
$authenticationProviders[] = $provider;
|
||||
$hasListeners = true;
|
||||
}
|
||||
}
|
||||
@ -321,6 +329,7 @@ class SecurityExtension extends Extension
|
||||
// Anonymous
|
||||
if (isset($firewall['anonymous'])) {
|
||||
$listeners[] = new Reference('security.authentication.listener.anonymous');
|
||||
$authenticationProviders[] = 'security.authentication.provider.anonymous';
|
||||
$hasListeners = true;
|
||||
}
|
||||
|
||||
@ -328,7 +337,7 @@ class SecurityExtension extends Extension
|
||||
throw new \LogicException(sprintf('No authentication listener registered for pattern "%s".', isset($firewall['pattern']) ? $firewall['pattern'] : ''));
|
||||
}
|
||||
|
||||
return array($listeners, $providers, $defaultEntryPoint);
|
||||
return array($listeners, $defaultEntryPoint);
|
||||
}
|
||||
|
||||
protected function createEncoders($encoders, ContainerBuilder $container)
|
||||
|
@ -54,7 +54,6 @@
|
||||
|
||||
<service id="security.authentication.provider.anonymous" class="%security.authentication.provider.anonymous%" public="false">
|
||||
<argument>%security.anonymous.key%</argument>
|
||||
<tag name="security.authentication_provider" />
|
||||
</service>
|
||||
|
||||
<service id="security.authentication.retry_entry_point" class="%security.authentication.retry_entry_point.class%" public="false" />
|
||||
|
Reference in New Issue
Block a user