diff options
-rw-r--r-- | apps/settings/lib/Command/AdminDelegation/Add.php | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/apps/settings/lib/Command/AdminDelegation/Add.php b/apps/settings/lib/Command/AdminDelegation/Add.php index 4ec6510f205..73c995b4762 100644 --- a/apps/settings/lib/Command/AdminDelegation/Add.php +++ b/apps/settings/lib/Command/AdminDelegation/Add.php @@ -40,16 +40,24 @@ class Add extends Base { $io = new SymfonyStyle($input, $output); $settingClass = $input->getArgument('settingClass'); if (!in_array(IDelegatedSettings::class, (array) class_implements($settingClass), true)) { - $io->error('The specified class isn’t a valid delegated setting.'); + $io->error('The specified class is not a valid delegated setting.'); return 2; } $groupId = $input->getArgument('groupId'); if (!$this->groupManager->groupExists($groupId)) { - $io->error('The specified group didn’t exist.'); + $io->error('The specified group does not exist.'); return 3; } + $groups = $this->authorizedGroupService->findExistingGroupsForClass($settingClass); + foreach ($groups as $group) { + if ($group->getGroupId() === $groupId) { + $io->error('The specified group has already been delegated to.'); + return 4; + } + } + $this->authorizedGroupService->create($groupId, $settingClass); $io->success('Administration of '.$settingClass.' delegated to '.$groupId.'.'); |