aboutsummaryrefslogtreecommitdiffstats
path: root/apps/provisioning_api/lib/Controller/GroupsController.php
diff options
context:
space:
mode:
authorLouis <louis@chmn.me>2024-07-24 11:15:54 +0200
committerGitHub <noreply@github.com>2024-07-24 11:15:54 +0200
commit7266a9ef333b47f4ec6dd16f48227fd4b4e862d4 (patch)
treeadb2b808e653b2ea1d0255ae774e97241d8c25c6 /apps/provisioning_api/lib/Controller/GroupsController.php
parentf3a2806b691543ba48968f875ad381d53f68ba35 (diff)
parent7f0f671417f6de083827327d72fa7f8a21c7a950 (diff)
downloadnextcloud-server-7266a9ef333b47f4ec6dd16f48227fd4b4e862d4.tar.gz
nextcloud-server-7266a9ef333b47f4ec6dd16f48227fd4b4e862d4.zip
Merge pull request #46418 from nextcloud/artonge/feat/user_admin_delegation
feat(users): Add users and group management to admin delegation
Diffstat (limited to 'apps/provisioning_api/lib/Controller/GroupsController.php')
-rw-r--r--apps/provisioning_api/lib/Controller/GroupsController.php15
1 files changed, 12 insertions, 3 deletions
diff --git a/apps/provisioning_api/lib/Controller/GroupsController.php b/apps/provisioning_api/lib/Controller/GroupsController.php
index 9320fe13aaa..97480058fd1 100644
--- a/apps/provisioning_api/lib/Controller/GroupsController.php
+++ b/apps/provisioning_api/lib/Controller/GroupsController.php
@@ -9,8 +9,10 @@ declare(strict_types=1);
namespace OCA\Provisioning_API\Controller;
use OCA\Provisioning_API\ResponseDefinitions;
+use OCA\Settings\Settings\Admin\Users;
use OCP\Accounts\IAccountManager;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSException;
use OCP\AppFramework\OCS\OCSForbiddenException;
@@ -154,8 +156,9 @@ class GroupsController extends AUserData {
}
// Check subadmin has access to this group
- if ($this->groupManager->isAdmin($user->getUID())
- || $isSubadminOfGroup) {
+ $isAdmin = $this->groupManager->isAdmin($user->getUID());
+ $isDelegatedAdmin = $this->groupManager->isDelegatedAdmin($user->getUID());
+ if ($isAdmin || $isDelegatedAdmin || $isSubadminOfGroup) {
$users = $this->groupManager->get($groupId)->getUsers();
$users = array_map(function ($user) {
/** @var IUser $user */
@@ -197,7 +200,9 @@ class GroupsController extends AUserData {
}
// Check subadmin has access to this group
- if ($this->groupManager->isAdmin($currentUser->getUID()) || $isSubadminOfGroup) {
+ $isAdmin = $this->groupManager->isAdmin($currentUser->getUID());
+ $isDelegatedAdmin = $this->groupManager->isDelegatedAdmin($currentUser->getUID());
+ if ($isAdmin || $isDelegatedAdmin || $isSubadminOfGroup) {
$users = $group->searchUsers($search, $limit, $offset);
// Extract required number
@@ -237,6 +242,7 @@ class GroupsController extends AUserData {
*
* 200: Group created successfully
*/
+ #[AuthorizedAdminSetting(settings:Users::class)]
public function addGroup(string $groupid, string $displayname = ''): DataResponse {
// Validate name
if (empty($groupid)) {
@@ -270,6 +276,7 @@ class GroupsController extends AUserData {
*
* 200: Group updated successfully
*/
+ #[AuthorizedAdminSetting(settings:Users::class)]
public function updateGroup(string $groupId, string $key, string $value): DataResponse {
$groupId = urldecode($groupId);
@@ -299,6 +306,7 @@ class GroupsController extends AUserData {
*
* 200: Group deleted successfully
*/
+ #[AuthorizedAdminSetting(settings:Users::class)]
public function deleteGroup(string $groupId): DataResponse {
$groupId = urldecode($groupId);
@@ -322,6 +330,7 @@ class GroupsController extends AUserData {
*
* 200: Sub admins returned
*/
+ #[AuthorizedAdminSetting(settings:Users::class)]
public function getSubAdminsOfGroup(string $groupId): DataResponse {
// Check group exists
$targetGroup = $this->groupManager->get($groupId);