Bläddra i källkod

Full fos_group table during installation, with common roles.

Julio Montoya 6 år sedan
förälder
incheckning
779f350bd6

+ 20 - 1
main/inc/lib/usermanager.lib.php

@@ -354,6 +354,22 @@ class UserManager
         try {
             $userManager->updateUser($user);
             $userId = $user->getId();
+
+            // Add user to a group
+            $statusToGroup = [
+                COURSEMANAGER => 'TEACHER',
+                STUDENT => 'STUDENT',
+                DRH => 'RRHH',
+                SESSIONADMIN => 'SESSION_ADMIN',
+                STUDENT_BOSS => 'STUDENT_BOSS',
+                INVITEE => 'INVITEE',
+            ];
+
+            $group = Container::$container->get('fos_user.group_manager')->findGroupBy(['code' => $statusToGroup[$status]]);
+            if ($group) {
+                $user->addGroup($group);
+                $userManager->updateUser($user);
+            }
         } catch (Exception $e) {
             error_log($e->getMessage());
         }
@@ -5376,7 +5392,10 @@ class UserManager
                 Database::query($sql);
             }
 
-            $user->addRole('ROLE_SUPER_ADMIN');
+            $group = Container::$container->get('fos_user.group_manager')->findGroupBy(['code' => 'ADMIN']);
+            if ($group) {
+                $user->addGroup($group);
+            }
             self::getManager()->updateUser($user, true);
         }
     }

+ 57 - 1
main/install/install.lib.php

@@ -3133,6 +3133,62 @@ function finishInstallationWithContainer(
     $manager->persist($accessUrl);
     $manager->flush();
 
+    // Creating fos_group (groups and roles)
+    $groupManager = $container->get('fos_user.group_manager');
+
+    $groups = [
+        [
+            'code' => 'ADMIN',
+            'title' => 'Administrators',
+            'roles' => ['ROLE_ADMIN'],
+        ],
+        [
+            'code' => 'STUDENT',
+            'title' => 'Students',
+            'roles' => ['ROLE_STUDENT'],
+        ],
+        [
+            'code' => 'TEACHER',
+            'title' => 'Teachers',
+            'roles' => ['ROLE_TEACHER'],
+        ],
+        [
+            'code' => 'RRHH',
+            'title' => 'Human resources manager',
+            'roles' => ['ROLE_RRHH'],
+        ],
+        [
+            'code' => 'SESSION_MANAGER',
+            'title' => 'Session',
+            'roles' => ['ROLE_SESSION_MANAGER'],
+        ],
+        [
+            'code' => 'QUESTION_MANAGER',
+            'title' => 'Question manager',
+            'roles' => ['ROLE_QUESTION_MANAGER'],
+        ],
+        [
+            'code' => 'STUDENT_BOSS',
+            'title' => 'Student boss',
+            'roles' => ['ROLE_STUDENT_BOSS'],
+        ],
+        [
+            'code' => 'INVITEE',
+            'title' => 'Invitee',
+            'roles' => ['ROLE_INVITEE'],
+        ],
+    ];
+
+    foreach ($groups as $groupData) {
+        $group = $groupManager->createGroup($groupData['title']);
+        $group->setCode($groupData['code']);
+        foreach ($groupData['roles'] as $role) {
+            $group->addRole($role);
+        }
+        $manager->persist($group);
+        $groupManager->updateGroup($group, true);
+    }
+
     // Creating settings
     $settingsManager->installSchemas($accessUrl);
 
@@ -3237,7 +3293,7 @@ function finishInstallationWithContainer(
     UserManager::setPasswordEncryption($encryptPassForm);
 
     // Create admin user.
-    @UserManager::create_user(
+    $userId = @UserManager::create_user(
         $adminFirstName,
         $adminLastName,
         1,

+ 26 - 30
src/UserBundle/Admin/UserAdmin.php

@@ -41,33 +41,33 @@ class UserAdmin extends BaseUserAdmin
         $formMapper
             ->tab('User')
             ->with('General')
-            ->add('username')
-            ->add('email')
-            /*->add(
-                'plainPassword',
-                'text',
-                array(
-                    'required' => (!$this->getSubject() || is_null(
-                            $this->getSubject()->getId()
-                        )),
-                )
-            )*/
+                ->add('username')
+                ->add('email')
+                /*->add(
+                    'plainPassword',
+                    'text',
+                    array(
+                        'required' => (!$this->getSubject() || is_null(
+                                $this->getSubject()->getId()
+                            )),
+                    )
+                )*/
             ->end()
             ->with('Profile')
-            /*->add(
-                'dateOfBirth',
-                'sonata_type_date_picker',
-                array(
-                    'years' => range(1900, $now->format('Y')),
-                    'dp_min_date' => '1-1-1900',
-                    'dp_max_date' => $now->format('c'),
-                    'required' => false,
-                )
-            )*/
+                /*->add(
+                    'dateOfBirth',
+                    'sonata_type_date_picker',
+                    array(
+                        'years' => range(1900, $now->format('Y')),
+                        'dp_min_date' => '1-1-1900',
+                        'dp_max_date' => $now->format('c'),
+                        'required' => false,
+                    )
+                )*/
             ->add('firstname', null, ['required' => false])
             ->add('lastname', null, ['required' => false])
-            //->add('website', 'url', array('required' => false))
-            //->add('biography', 'text', array('required' => false))
+            ->add('website', 'url', array('required' => false))
+            ->add('biography', 'text', array('required' => false))
             /*->add(
                 'gender',
                 'sonata_user_gender',
@@ -90,10 +90,7 @@ class UserAdmin extends BaseUserAdmin
             ->end()*/
             ->end();
 
-        if ($this->getSubject() && !$this->getSubject()->hasRole(
-                'ROLE_SUPER_ADMIN'
-            )
-        ) {
+        if ($this->getSubject() && !$this->getSubject()->hasRole('ROLE_SUPER_ADMIN')) {
             $formMapper
                 ->tab('Security')
                 ->with('Status')
@@ -185,9 +182,8 @@ class UserAdmin extends BaseUserAdmin
             ->add('email')
             ->add('officialCode')
             ->add('groups')
-            ->add(
-                'active'
-            )//->add('registrationDate', 'sonata_type_filter_datetime', array('input_type' => 'timestamp'))
+            ->add('active')
+            //->add('registrationDate', 'doctrine_orm_datetime_range', array('input_type' => 'timestamp'))
         ;
     }
 }

+ 36 - 0
src/UserBundle/Entity/User.php

@@ -1738,6 +1738,14 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
         return true;
     }
 
+    /**
+     * @return bool
+     */
+    public function getCredentialsExpired()
+    {
+        return $this->credentialsExpired;
+    }
+
     /**
      * @param bool $boolean
      *
@@ -1750,6 +1758,11 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
         return $this;
     }
 
+    /**
+     * @param $boolean
+     *
+     * @return $this|BaseUser
+     */
     public function setEnabled($boolean)
     {
         $this->enabled = (bool) $boolean;
@@ -1757,6 +1770,14 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
         return $this;
     }
 
+    /**
+     * @return bool
+     */
+    public function getExpired()
+    {
+        return $this->expired;
+    }
+
     /**
      * Sets this user to expired.
      *
@@ -1783,6 +1804,19 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
         return $this;
     }
 
+    /**
+     * @return bool
+     */
+    public function getLocked(): bool
+    {
+        return $this->locked;
+    }
+
+    /**
+     * @param $boolean
+     *
+     * @return $this
+     */
     public function setLocked($boolean)
     {
         $this->locked = $boolean;
@@ -1967,4 +2001,6 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
 
         return 'users/'.substr((string) $id, 0, 1).'/'.$id.'/'.'small_'.$this->getPictureUri();
     }
+
+
 }