Browse Source

[FrameworkBundle] added a way to configure the switch-user behavior

Fabien Potencier 14 years ago
parent
commit
4b321141f9

+ 8 - 0
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/SecurityExtension.php

@@ -535,6 +535,14 @@ class SecurityExtension extends Extension
         $arguments[1] = new Reference($userProvider);
         $listener->setArguments($arguments);
 
+        if (isset($config['role'])) {
+            $container->setParameter('security.authentication.switchuser.role', $config['role']);
+        }
+
+        if (isset($config['parameter'])) {
+            $container->setParameter('security.authentication.switchuser.parameter', $config['parameter']);
+        }
+
         return $switchUserListenerId;
     }
 

+ 2 - 0
src/Symfony/Bundle/FrameworkBundle/Resources/config/security.xml

@@ -55,6 +55,8 @@
         <parameter key="security.logout_listener.class">Symfony\Component\HttpKernel\Security\Firewall\LogoutListener</parameter>
 
         <parameter key="security.authentication.switchuser_listener.class">Symfony\Component\HttpKernel\Security\Firewall\SwitchUserListener</parameter>
+        <parameter key="security.authentication.switchuser.role">ROLE_ALLOWED_TO_SWITCH</parameter>
+        <parameter key="security.authentication.switchuser.parameter">_switch_user</parameter>
 
         <parameter key="security.access.decision_manager.class">Symfony\Bundle\FrameworkBundle\Security\Authorization\AccessDecisionManager</parameter>
         <parameter key="security.access.simple_role_voter.class">Symfony\Component\Security\Authorization\Voter\RoleVoter</parameter>

+ 2 - 0
src/Symfony/Bundle/FrameworkBundle/Resources/config/security_templates.xml

@@ -47,6 +47,8 @@
             <argument type="service" id="security.account_checker" />
             <argument type="service" id="security.access.decision_manager" />
             <argument type="service" id="logger" on-invalid="null" />
+            <argument>%security.authentication.switchuser.parameter%</argument>
+            <argument>%security.authentication.switchuser.role%</argument>
         </service>
 
         <service id="security.access_listener" class="%security.access_listener.class%">