diff --git a/Build/Packages/permission-sets-examples/Configuration/PermissionSets/some-web-modules.yaml b/Build/Packages/permission-sets-examples/Configuration/PermissionSets/some-web-modules.yaml new file mode 100644 index 0000000..0d6e05e --- /dev/null +++ b/Build/Packages/permission-sets-examples/Configuration/PermissionSets/some-web-modules.yaml @@ -0,0 +1,3 @@ +label: Allow web_page and web_list modules +modules: + web: ['web_layout', 'web_list'] diff --git a/Classes/AttachPermissionsToGroups.php b/Classes/AttachPermissionsToGroups.php index 6a45339..aba2630 100644 --- a/Classes/AttachPermissionsToGroups.php +++ b/Classes/AttachPermissionsToGroups.php @@ -196,6 +196,12 @@ private function expandModuleInstruction(array $allowedModules): array foreach ($subModuleList as $subModuleName) { $finalModules[] = $subModuleName->getIdentifier(); } + } elseif (is_array($allowedModule)) { + foreach ($allowedModule as $subModuleName) { + if ($this->moduleProvider->isModuleRegistered($subModuleName)) { + $finalModules[] = $subModuleName; + } + } } elseif ((bool)$allowedModule === true) { if ($this->moduleProvider->isModuleRegistered($moduleName)) { $finalModules[] = $moduleName; diff --git a/Tests/Functional/AttachPermissionsToGroupsTest.php b/Tests/Functional/AttachPermissionsToGroupsTest.php index 1547cbd..30aa7d4 100644 --- a/Tests/Functional/AttachPermissionsToGroupsTest.php +++ b/Tests/Functional/AttachPermissionsToGroupsTest.php @@ -115,6 +115,19 @@ public function allWebModules(): void self::assertStringContainsString('web_list', $modGroup['groupMods']); } + #[Test] + public function someWebModules(): void + { + $group = $this->emptyGroup; + $group['permission_sets'] = 'b13/permission-sets-examples/some-web-modules'; + $event = new AfterGroupsResolvedEvent('be_groups', [$group], [1], []); + $attachPermissionsToGroups = GeneralUtility::makeInstance(AttachPermissionsToGroups::class); + $attachPermissionsToGroups($event); + $modGroup = $event->getGroups()[0]; + self::assertStringContainsString('web_layout', $modGroup['groupMods']); + self::assertStringContainsString('web_list', $modGroup['groupMods']); + } + #[Test] public function webInfoModule(): void {