Browse Source

Update code to the last AdminBundle changes, remove Bundle::getParent method

Thomas Rabaix 14 years ago
parent
commit
23aca9a7a0
4 changed files with 31 additions and 23 deletions
  1. 10 11
      Admin/Entity/UserAdmin.php
  2. 19 4
      Form/Type/SecurityRolesType.php
  3. 1 1
      Resources/config/form.xml
  4. 1 7
      SonataUserBundle.php

+ 10 - 11
Admin/Entity/UserAdmin.php

@@ -28,17 +28,6 @@ class UserAdmin extends Admin
         'createdAt',
     );
 
-    protected $form = array(
-        'username',
-        'email',
-        'enabled',
-        'locked',
-        'expired',
-        'credentialsExpired',
-        'credentialsExpireAt',
-        'groups'
-    );
-
     protected $formGroups = array(
         'General' => array(
             'fields' => array('username', 'email', 'plainPassword')
@@ -64,6 +53,16 @@ class UserAdmin extends Admin
 
     public function configureFormFields(FormMapper $formMapper)
     {
+        $formMapper
+            ->add('username')
+            ->add('email')
+            ->add('groups', array('required' => false))
+            ->add('locked', array('required' => false))
+            ->add('expired', array('required' => false))
+            ->add('enabled', array('required' => false))
+            ->add('credentialsExpired', array('required' => false))
+        ;
+
         $formMapper->addType('roles', 'sonata_security_roles', array(
             'multiple' => true,
 //            'expanded' => true,

+ 19 - 4
Form/Type/SecurityRolesType.php

@@ -13,14 +13,15 @@
 namespace Sonata\UserBundle\Form\Type;
 
 use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
+use Sonata\AdminBundle\Admin\Pool;
 
 class SecurityRolesType extends ChoiceType
 {
-    protected $rolesHierarchy = array();
+    protected $pool;
 
-    public function __construct($container)
+    public function __construct(Pool $pool)
     {
-        $this->rolesHierarchy = $container->getParameter('security.role_hierarchy.roles');
+        $this->pool = $pool;
     }
 
     public function getDefaultOptions(array $options)
@@ -29,7 +30,21 @@ class SecurityRolesType extends ChoiceType
 
         $roles = array();
         if (count($options['choices']) == 0) {
-            foreach ($this->rolesHierarchy as $name => $rolesHierarchy) {
+            // get roles from the Admin classes
+            foreach ($this->pool->getAdminServiceIds() as $id) {
+                try {
+                    $admin = $this->pool->getInstance($id);
+                } catch (\Exception $e) {
+                    continue;
+                }
+
+                foreach ($admin->getSecurityInformation() as $role => $acls) {
+                    $roles[$role] = $role;
+                }
+            }
+
+            // get roles from the service container
+            foreach ($this->pool->getContainer()->getParameter('security.role_hierarchy.roles') as $name => $rolesHierarchy) {
                 $roles[$name] = $name;
                 foreach ($rolesHierarchy as $role) {
                     if (!isset($roles[$role])) {

+ 1 - 1
Resources/config/form.xml

@@ -6,7 +6,7 @@
     <services>
         <service id="sonata.user.form.type.security_roles" class="Sonata\UserBundle\Form\Type\SecurityRolesType">
             <tag name="form.type" alias="sonata_security_roles" />
-            <argument type="service" id="service_container" />
+            <argument type="service" id="sonata.admin.pool" />
         </service>
     </services>
 

+ 1 - 7
SonataUserBundle.php

@@ -15,11 +15,5 @@ use Symfony\Component\DependencyInjection\ContainerBuilder;
 
 class SonataUserBundle extends Bundle
 {
-    /**
-     * {@inheritdoc}
-     */
-    public function getParent()
-    {
-        return 'FOSUserBundle';
-    }
+
 }