Просмотр исходного кода

Merge branch 'acl' of https://github.com/IamPersistent/symfony into security

Johannes Schmitt 14 лет назад
Родитель
Сommit
f787a2a748

+ 1 - 0
src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php

@@ -86,6 +86,7 @@ class MainConfiguration implements ConfigurationInterface
                                 ->scalarNode('prefix')->defaultValue('sf2_acl_')->end()
                             ->end()
                         ->end()
+                        ->scalarNode('provider')->end()
                         ->arrayNode('tables')
                             ->addDefaultsIfNotSet()
                             ->children()

+ 13 - 5
src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

@@ -110,13 +110,21 @@ class SecurityExtension extends Extension
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('security_acl.xml');
 
-        if (isset($config['connection'])) {
-            $container->setAlias('security.acl.dbal.connection', sprintf('doctrine.dbal.%s_connection', $config['connection']));
-        }
-
         if (isset($config['cache']['id'])) {
             $container->setAlias('security.acl.cache', $config['cache']['id']);
         }
+        $container->getDefinition('security.acl.voter.basic_permissions')->addArgument($config['voter']['allow_if_object_identity_unavailable']);
+
+        if (isset($config['provider'])) {
+            $container->setAlias('security.acl.provider', $config['provider']);
+            return;
+        }
+
+        $loader->load('security_acl_dbal.xml');
+
+        if (isset($config['connection'])) {
+            $container->setAlias('security.acl.dbal.connection', sprintf('doctrine.dbal.%s_connection', $config['connection']));
+        }
         $container->getDefinition('security.acl.cache.doctrine')->addArgument($config['cache']['prefix']);
 
         $container->setParameter('security.acl.dbal.class_table_name', $config['tables']['class']);
@@ -125,7 +133,6 @@ class SecurityExtension extends Extension
         $container->setParameter('security.acl.dbal.oid_ancestors_table_name', $config['tables']['object_identity_ancestors']);
         $container->setParameter('security.acl.dbal.sid_table_name', $config['tables']['security_identity']);
 
-        $container->getDefinition('security.acl.voter.basic_permissions')->addArgument($config['voter']['allow_if_object_identity_unavailable']);
     }
 
     /**
@@ -593,3 +600,4 @@ class SecurityExtension extends Extension
         return 'http://symfony.com/schema/dic/security';
     }
 }
+

+ 0 - 26
src/Symfony/Bundle/SecurityBundle/Resources/config/security_acl.xml

@@ -5,8 +5,6 @@
     xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
 
     <parameters>
-        <parameter key="security.acl.dbal.provider.class">Symfony\Component\Security\Acl\Dbal\MutableAclProvider</parameter>
-
         <parameter key="security.acl.permission_granting_strategy.class">Symfony\Component\Security\Acl\Domain\PermissionGrantingStrategy</parameter>
 
         <parameter key="security.acl.voter.class">Symfony\Component\Security\Acl\Voter\AclVoter</parameter>
@@ -21,8 +19,6 @@
     </parameters>
 
     <services>
-        <service id="security.acl.dbal.connection" alias="database_connection" />
-
         <service id="security.acl.object_identity_retrieval_strategy" class="%security.acl.object_identity_retrieval_strategy.class%" public="false"></service>
 
         <service id="security.acl.security_identity_retrieval_strategy" class="%security.acl.security_identity_retrieval_strategy.class%" public="false">
@@ -30,34 +26,12 @@
             <argument type="service" id="security.authentication.trust_resolver" />
         </service>
 
-        <service id="security.acl.dbal.provider" class="%security.acl.dbal.provider.class%" public="false">
-            <argument type="service" id="security.acl.dbal.connection" />
-            <argument type="service" id="security.acl.permission_granting_strategy" />
-            <argument type="collection">
-                <argument key="class_table_name">%security.acl.dbal.class_table_name%</argument>
-                <argument key="entry_table_name">%security.acl.dbal.entry_table_name%</argument>
-                <argument key="oid_table_name">%security.acl.dbal.oid_table_name%</argument>
-                <argument key="oid_ancestors_table_name">%security.acl.dbal.oid_ancestors_table_name%</argument>
-                <argument key="sid_table_name">%security.acl.dbal.sid_table_name%</argument>
-            </argument>
-            <argument type="service" id="security.acl.cache" on-invalid="null" />
-        </service>
-
-        <service id="security.acl.provider" alias="security.acl.dbal.provider" />
-
         <service id="security.acl.permission_granting_strategy" class="%security.acl.permission_granting_strategy.class%" public="false">
             <call method="setAuditLogger">
                 <argument type="service" id="security.acl.audit_logger" on-invalid="ignore" />
             </call>
         </service>
 
-        <service id="security.acl.cache.doctrine" class="%security.acl.cache.doctrine.class%" public="false">
-            <argument type="service" id="security.acl.cache.doctrine_cache_impl" />
-            <argument type="service" id="security.acl.permission_granting_strategy" />
-        </service>
-
-        <service id="security.acl.cache.doctrine.cache_impl" alias="doctrine.orm.default_result_cache" public="false" />
-
         <service id="security.acl.permission.map" class="%security.acl.permission.map.class%" public="false"></service>
 
         <service id="security.acl.voter.basic_permissions" class="%security.acl.voter.class%" public="false">

+ 38 - 0
src/Symfony/Bundle/SecurityBundle/Resources/config/security_acl_dbal.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<container xmlns="http://symfony.com/schema/dic/services"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
+
+    <parameters>
+        <parameter key="security.acl.dbal.provider.class">Symfony\Component\Security\Acl\Dbal\MutableAclProvider</parameter>
+    </parameters>
+
+    <services>
+        <service id="security.acl.dbal.connection" alias="database_connection" />
+
+        <service id="security.acl.dbal.provider" class="%security.acl.dbal.provider.class%" public="false">
+            <argument type="service" id="security.acl.dbal.connection" />
+            <argument type="service" id="security.acl.permission_granting_strategy" />
+            <argument type="collection">
+                <argument key="class_table_name">%security.acl.dbal.class_table_name%</argument>
+                <argument key="entry_table_name">%security.acl.dbal.entry_table_name%</argument>
+                <argument key="oid_table_name">%security.acl.dbal.oid_table_name%</argument>
+                <argument key="oid_ancestors_table_name">%security.acl.dbal.oid_ancestors_table_name%</argument>
+                <argument key="sid_table_name">%security.acl.dbal.sid_table_name%</argument>
+            </argument>
+            <argument type="service" id="security.acl.cache" on-invalid="null" />
+        </service>
+
+        <service id="security.acl.provider" alias="security.acl.dbal.provider" />
+
+        <service id="security.acl.cache.doctrine" class="%security.acl.cache.doctrine.class%" public="false">
+            <argument type="service" id="security.acl.cache.doctrine_cache_impl" />
+            <argument type="service" id="security.acl.permission_granting_strategy" />
+        </service>
+
+        <service id="security.acl.cache.doctrine.cache_impl" alias="doctrine.orm.default_result_cache" public="false" />
+
+        <service id="security.acl.permission.map" class="%security.acl.permission.map.class%" public="false"></service>
+    </services>
+</container>