[Security] removed 'security.authentication_provider' tag

This commit is contained in:
Johannes Schmitt 2011-02-14 18:52:07 +01:00 committed by Fabien Potencier
parent 9e6fc0a11e
commit bc283f1a66
9 changed files with 18 additions and 45 deletions

View File

@ -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))
;
}
}

View File

@ -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()

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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" />