diff --git a/Classes/AttachPermissionsToGroups.php b/Classes/AttachPermissionsToGroups.php index 34e91d1..2baedf4 100644 --- a/Classes/AttachPermissionsToGroups.php +++ b/Classes/AttachPermissionsToGroups.php @@ -49,6 +49,17 @@ public function __invoke(AfterGroupsResolvedEvent $event) } $finalGroups[] = $group; } + $user = $event->getUserData(); + if (!empty($user['permissions_sets'])) { + $permissionSetIdentifiers = explode(',', $user['permission_sets']); + $group = []; + foreach ($permissionSetIdentifiers as $permissionSetIdentifier) { + if ($this->registry->has($permissionSetIdentifier)) { + $group = $this->expandGroupPermissionsWithPermissionSet($group, $this->registry->get($permissionSetIdentifier)); + } + } + $finalGroups[] = $group; + } $event->setGroups($finalGroups); } diff --git a/Configuration/TCA/Overrides/be_users.php b/Configuration/TCA/Overrides/be_users.php new file mode 100644 index 0000000..55f099f --- /dev/null +++ b/Configuration/TCA/Overrides/be_users.php @@ -0,0 +1,13 @@ + 'Permission Sets', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectMultipleSideBySide', + 'itemsProcFunc' => \B13\PermissionSets\AvailablePermissionSets::class . '->backendGroupSelector', + 'items' => [] + ] +]; + +\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('be_users', 'permission_sets', '', 'after:usergroup'); diff --git a/ext_tables.sql b/ext_tables.sql index e4f290a..7daca4e 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -1,3 +1,7 @@ CREATE TABLE be_groups ( permission_sets varchar(2000) DEFAULT '' ); + +CREATE TABLE be_users ( + permission_sets varchar(2000) DEFAULT '' +);