浏览代码

[Security] removed 'security.authentication_provider' tag

Johannes Schmitt 14 年之前
父节点
当前提交
bc283f1a66

+ 0 - 27
src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddAuthenticationProvidersPass.php

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

+ 1 - 1
src/Symfony/Bundle/SecurityBundle/DependencyInjection/Configuration.php

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

+ 0 - 4
src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/AbstractFactory.php

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

+ 0 - 1
src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpBasicFactory.php

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

+ 0 - 1
src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/HttpDigestFactory.php

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

+ 0 - 1
src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php

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

+ 0 - 1
src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/X509Factory.php

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

+ 17 - 8
src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

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

+ 0 - 1
src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml

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