コード例 #1
0
 /**
  * Display list of all users
  */
 public function getUserlist()
 {
     $userlist = UserAgent::getUserlist();
     // Logged in user can view other user's profiles
     $viewProfiles = PermissionHandler::checkAdmin(Auth::user(), Permissions::ALLOW_ALL);
     $thisUser = Auth::user();
     // List of groups this user can invite people to
     $groupsManaged = [];
     // For each group logged in user belongs to
     foreach (ProjectHandler::getUserProjects($thisUser) as $group) {
         // Check if user has admin permission..
         if (PermissionHandler::checkProject($thisUser, $group['name'], Permissions::PROJECT_ADMIN)) {
             array_push($groupsManaged, $group['name']);
         }
     }
     $userGroupInfo = [];
     foreach ($userlist as $user) {
         // List of groups $user belongs to
         $usergroups = ProjectHandler::getUserProjects($user);
         $usergroupnames = array_column($usergroups, 'name');
         // List of groups logged in user can invite $user to join
         // and that $user is not already a member of.
         $inviteGroups = array_diff($groupsManaged, $usergroupnames);
         $belongGroups = [];
         foreach ($usergroups as $group) {
             // Can logged user assign roles for this group ?
             $canAssign = PermissionHandler::checkProject($thisUser, $group['name'], Permissions::PROJECT_ADMIN);
             // Can logged user view info for this group ?
             $canView = PermissionHandler::checkProject($thisUser, $group['name'], Permissions::PROJECT_READ);
             // User cannot change his own permissions
             if ($user['_id'] == $thisUser['_id']) {
                 $canAssign = false;
             }
             $group['canview'] = $canView;
             $group['assignrole'] = $canAssign;
             array_push($belongGroups, $group);
         }
         $userGroupInfo[$user['_id']] = ['groups' => $belongGroups, 'tojoin' => $inviteGroups];
     }
     return View::make('users.list')->with('userlist', $userlist)->with('viewProfiles', $viewProfiles)->with('usergroups', $userGroupInfo);
 }