0
0
mirror of https://github.com/nextcloud/server.git synced 2024-12-29 16:38:28 +00:00
nextcloud_server/apps/settings/lib/Command/AdminDelegation/Add.php
provokateurin 9836e9b164
chore(deps): Update nextcloud/coding-standard to v1.3.1
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-19 14:21:20 +02:00

60 lines
1.8 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types = 1);
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Settings\Command\AdminDelegation;
use OC\Core\Command\Base;
use OCA\Settings\Service\AuthorizedGroupService;
use OCP\IGroupManager;
use OCP\Settings\IDelegatedSettings;
use OCP\Settings\IManager;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
class Add extends Base {
public function __construct(
private IManager $settingManager,
private AuthorizedGroupService $authorizedGroupService,
private IGroupManager $groupManager,
) {
parent::__construct();
}
protected function configure(): void {
$this
->setName('admin-delegation:add')
->setDescription('add setting delegation to a group')
->addArgument('settingClass', InputArgument::REQUIRED, 'Admin setting class')
->addArgument('groupId', InputArgument::REQUIRED, 'Delegate to group ID')
->addUsage('\'OCA\Settings\Settings\Admin\Server\' mygroup')
;
}
protected function execute(InputInterface $input, OutputInterface $output): int {
$io = new SymfonyStyle($input, $output);
$settingClass = $input->getArgument('settingClass');
if (!in_array(IDelegatedSettings::class, (array)class_implements($settingClass), true)) {
$io->error('The specified class isnt a valid delegated setting.');
return 2;
}
$groupId = $input->getArgument('groupId');
if (!$this->groupManager->groupExists($groupId)) {
$io->error('The specified group didnt exist.');
return 3;
}
$this->authorizedGroupService->create($groupId, $settingClass);
$io->success('Administration of ' . $settingClass . ' delegated to ' . $groupId . '.');
return 0;
}
}