Skip to content
Snippets Groups Projects
Unverified Commit e24e9ec0 authored by Joas Schilling's avatar Joas Schilling
Browse files

Don't loop over all groups to check for subadmins

parent 6ffde749
No related branches found
No related tags found
No related merge requests found
......@@ -110,6 +110,25 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
* @return IGroup[]
*/
public function getSubAdminsGroups(IUser $user): array {
$groupIds = $this->getSubAdminsGroupIds($user);
$groups = [];
foreach ($groupIds as $groupId) {
$group = $this->groupManager->get($groupId);
if ($group !== null) {
$groups[$group->getGID()] = $group;
}
}
return $groups;
}
/**
* Get group ids of a SubAdmin
* @param IUser $user the SubAdmin
* @return string[]
*/
public function getSubAdminsGroupIds(IUser $user): array {
$qb = $this->dbConn->getQueryBuilder();
$result = $qb->select('gid')
......@@ -119,10 +138,7 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
$groups = [];
while ($row = $result->fetch()) {
$group = $this->groupManager->get($row['gid']);
if (!is_null($group)) {
$groups[$group->getGID()] = $group;
}
$groups[] = $row['gid'];
}
$result->closeCursor();
......@@ -256,13 +272,10 @@ class SubAdmin extends PublicEmitter implements ISubAdmin {
return false;
}
$accessibleGroups = $this->getSubAdminsGroups($subadmin);
foreach ($accessibleGroups as $accessibleGroup) {
if ($accessibleGroup->inGroup($user)) {
return true;
}
}
return false;
$accessibleGroups = $this->getSubAdminsGroupIds($subadmin);
$userGroups = $this->groupManager->getUserGroupIds($user);
return !empty(array_intersect($accessibleGroups, $userGroups));
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment