コード例 #1
0
 public function updateUserGroups($userID, array $groupIDs)
 {
     $userGroups = \Sentinel::getUserGroupProvider()->findGroupsByUserID($userID)->pluck('group_id')->toArray();
     $groupsHaveChanged = false;
     $groupsToAdd = array_diff($groupIDs, $userGroups);
     if (!empty($groupsToAdd)) {
         $groupsHaveChanged = true;
         foreach ($groupsToAdd as $newUserGroup) {
             \Sentinel::getUserGroupProvider()->attach($userID, $newUserGroup);
             \Sentinel::getPermissionProvider()->addUserGroupPermissions($userID, $newUserGroup);
         }
     }
     $groupsToRemove = array_diff($userGroups, $groupIDs);
     if (!empty($groupsToRemove)) {
         $groupsHaveChanged = true;
         foreach ($groupsToRemove as $oldUserGroup) {
             \Sentinel::getUserGroupProvider()->detach($userID, $oldUserGroup);
             \Sentinel::getPermissionProvider()->removeUserGroupPermissions($userID, $oldUserGroup);
         }
     }
     return $groupsHaveChanged;
 }
コード例 #2
0
 /**
  * Updating a user and his person table + group table info.
  *
  * @param int $id
  * @param array $data
  *
  * @return void
  */
 public function updateUser($id, array $data)
 {
     if (!empty($id) && !empty($data)) {
         $this->createModel()->newQuery()->where('id', $id)->update(array('name' => $data['name'], 'email' => $data['email']));
         unset($data['name'], $data['email']);
         $personID = \Spirit::getPersonProvider()->getPersonByUserId($id)->select(['id as user_id'])->value('user_id');
         if (!is_null($personID)) {
             if (!isset($data['groups'])) {
                 $data['groups'] = [];
             }
             $groupsHaveChanged = \Sentinel::getGroupProvider()->updateUserGroups($id, $data['groups']);
             if ($groupsHaveChanged === true) {
                 \Sentinel::getPermissionProvider()->updateUserGroupPermissions($id, $data['groups']);
             }
             unset($data['groups']);
             \Spirit::getPersonProvider()->updatePerson($personID, $data);
         } else {
             throw new \UnexpectedValueException('User ' . $id . ' not found for update');
         }
     } else {
         throw new \UnexpectedValueException('Invalid data for user update');
     }
 }