diff options
author | Louis Chemineau <louis@chmn.me> | 2024-07-11 12:09:39 +0200 |
---|---|---|
committer | Louis Chemineau <louis@chmn.me> | 2024-07-22 17:17:35 +0200 |
commit | dff881544920f426b984f91b7bc8dece1f351342 (patch) | |
tree | 9ebce4597dad2cd0fe817257f76348f28805c2ba /lib/private/Group/MetaData.php | |
parent | 1af827fdb39dd182743853e17cf5493a8b4637d2 (diff) | |
download | nextcloud-server-dff881544920f426b984f91b7bc8dece1f351342.tar.gz nextcloud-server-dff881544920f426b984f91b7bc8dece1f351342.zip |
feat(users): Add support for admin delegation for users and groups management
Signed-off-by: Louis Chemineau <louis@chmn.me>
Diffstat (limited to 'lib/private/Group/MetaData.php')
-rw-r--r-- | lib/private/Group/MetaData.php | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/lib/private/Group/MetaData.php b/lib/private/Group/MetaData.php index 638dc184812..da553c89a7b 100644 --- a/lib/private/Group/MetaData.php +++ b/lib/private/Group/MetaData.php @@ -17,33 +17,22 @@ class MetaData { public const SORT_USERCOUNT = 1; // May have performance issues on LDAP backends public const SORT_GROUPNAME = 2; - /** @var string */ - protected $user; - /** @var bool */ - protected $isAdmin; /** @var array */ protected $metaData = []; - /** @var GroupManager */ - protected $groupManager; /** @var int */ protected $sorting = self::SORT_NONE; - /** @var IUserSession */ - protected $userSession; /** * @param string $user the uid of the current user * @param bool $isAdmin whether the current users is an admin */ public function __construct( - string $user, - bool $isAdmin, - IGroupManager $groupManager, - IUserSession $userSession + private string $user, + private bool $isAdmin, + private bool $isDelegatedAdmin, + private IGroupManager $groupManager, + private IUserSession $userSession ) { - $this->user = $user; - $this->isAdmin = $isAdmin; - $this->groupManager = $groupManager; - $this->userSession = $userSession; } /** @@ -162,11 +151,11 @@ class MetaData { * @return IGroup[] */ public function getGroups(string $search = ''): array { - if ($this->isAdmin) { + if ($this->isAdmin || $this->isDelegatedAdmin) { return $this->groupManager->search($search); } else { $userObject = $this->userSession->getUser(); - if ($userObject !== null) { + if ($userObject !== null && $this->groupManager instanceof GroupManager) { $groups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($userObject); } else { $groups = []; |