aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Group/MetaData.php
diff options
context:
space:
mode:
authorLouis Chemineau <louis@chmn.me>2024-07-11 12:09:39 +0200
committerLouis Chemineau <louis@chmn.me>2024-07-22 17:17:35 +0200
commitdff881544920f426b984f91b7bc8dece1f351342 (patch)
tree9ebce4597dad2cd0fe817257f76348f28805c2ba /lib/private/Group/MetaData.php
parent1af827fdb39dd182743853e17cf5493a8b4637d2 (diff)
downloadnextcloud-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.php25
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 = [];