aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-09-06 19:50:52 +0200
committerGitHub <noreply@github.com>2017-09-06 19:50:52 +0200
commita10c4517cbb20625b5ee32c1809bee40ecbb5456 (patch)
treeed81a72e616ac7cb5b833e90f47af3bd90e677e2 /lib
parent6be8642c59d59a76e0ed3586da029cd88a0a9be4 (diff)
parent586cefc4f17fe48320db2c56c6f62b01ae33c4d6 (diff)
downloadnextcloud-server-a10c4517cbb20625b5ee32c1809bee40ecbb5456.tar.gz
nextcloud-server-a10c4517cbb20625b5ee32c1809bee40ecbb5456.zip
Merge pull request #5571 from Luzifer/5570_backend_admin
Allow group backend to declare users as admins
Diffstat (limited to 'lib')
-rw-r--r--lib/private/Group/Backend.php1
-rw-r--r--lib/private/Group/Manager.php5
-rw-r--r--lib/public/GroupInterface.php4
3 files changed, 10 insertions, 0 deletions
diff --git a/lib/private/Group/Backend.php b/lib/private/Group/Backend.php
index 1e8d62f5e42..001d8d9da66 100644
--- a/lib/private/Group/Backend.php
+++ b/lib/private/Group/Backend.php
@@ -38,6 +38,7 @@ abstract class Backend implements \OCP\GroupInterface {
self::REMOVE_FROM_GOUP => 'removeFromGroup',
self::COUNT_USERS => 'countUsersInGroup',
self::GROUP_DETAILS => 'getGroupDetails',
+ self::IS_ADMIN => 'isAdmin',
];
/**
diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php
index 6d4f5a091c6..15d83380acf 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -288,6 +288,11 @@ class Manager extends PublicEmitter implements IGroupManager {
* @return bool if admin
*/
public function isAdmin($userId) {
+ foreach ($this->backends as $backend) {
+ if ($backend->implementsActions(\OC\Group\Backend::IS_ADMIN) && $backend->isAdmin($userId)) {
+ return true;
+ }
+ }
return $this->isInGroup($userId, 'admin');
}
diff --git a/lib/public/GroupInterface.php b/lib/public/GroupInterface.php
index 97837e50b16..f6ef237a333 100644
--- a/lib/public/GroupInterface.php
+++ b/lib/public/GroupInterface.php
@@ -51,6 +51,10 @@ interface GroupInterface {
//OBSOLETE const GET_DISPLAYNAME = 0x00010000;
const COUNT_USERS = 0x00100000;
const GROUP_DETAILS = 0x01000000;
+ /**
+ * @since 13.0.0
+ */
+ const IS_ADMIN = 0x10000000;
/**
* Check if backend implements actions