Loading config/schema/group.schema.yml +3 −0 Changes for config/schema/group.schema.yml: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -63,6 +63,9 @@ group.role.*: weight: type: 'integer' label: 'Weight' admin: type: 'boolean' label: 'Group role is an admin role' internal: type: 'boolean' label: 'Group role is used internally' Loading group.group.permissions.yml +0 −5 Changes for group.group.permissions.yml: 0 added lines, 5 removed lines. Original line number Diff line number Diff line # @todo Remove god-mode permission in 8.2.0 release, use 'is_admin' flag on role instead. administer group: title: 'Administer group' description: 'Administer the group, its content and members' restrict access: TRUE view group: title: 'View published group' view any unpublished group: Loading group.install +18 −0 Changes for group.install: 18 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -84,3 +84,21 @@ function group_update_9202() { $role->save(TRUE); } } /** * Convert group roles with the 'administer group' permission to admin roles. */ function group_update_9203() { $config_factory = \Drupal::configFactory(); foreach ($config_factory->listAll('group.role.') as $config_name) { $role = $config_factory->getEditable($config_name); if (in_array('administer group', $role->get('permissions'), TRUE)) { $role->set('permissions', []); $role->set('admin', TRUE); } else { $role->set('admin', FALSE); } $role->save(TRUE); } } src/Access/CalculatedGroupPermissionsItem.php +3 −8 Changes for src/Access/CalculatedGroupPermissionsItem.php: 3 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -49,16 +49,11 @@ class CalculatedGroupPermissionsItem implements CalculatedGroupPermissionsItemIn * @param bool $is_admin * (optional) Whether the item grants admin privileges. */ public function __construct($scope, $identifier, $permissions, $is_admin = NULL) { public function __construct($scope, $identifier, $permissions, $is_admin = FALSE) { $this->scope = $scope; $this->identifier = $identifier; $this->permissions = array_unique($permissions); // @todo Rework for group 8.2.x to no longer use the admin permission. // @todo Do make flag default to FALSE and pass role's isAdmin flag instead. $this->isAdmin = isset($is_admin) ? $is_admin : in_array('administer group', $permissions, TRUE); $this->permissions = $is_admin ? [] : array_unique($permissions); $this->isAdmin = $is_admin; } /** Loading src/Access/DefaultGroupPermissionCalculator.php +8 −10 Changes for src/Access/DefaultGroupPermissionCalculator.php: 8 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -65,7 +65,8 @@ class DefaultGroupPermissionCalculator extends GroupPermissionCalculatorBase { $item = new CalculatedGroupPermissionsItem( CalculatedGroupPermissionsItemInterface::SCOPE_GROUP_TYPE, $group_type_id, $group_role->getPermissions() $group_role->getPermissions(), $group_role->isAdmin() ); $calculated_permissions->addItem($item); Loading Loading @@ -95,7 +96,8 @@ class DefaultGroupPermissionCalculator extends GroupPermissionCalculatorBase { $item = new CalculatedGroupPermissionsItem( CalculatedGroupPermissionsItemInterface::SCOPE_GROUP_TYPE, $group_type_id, $group_role->getPermissions() $group_role->getPermissions(), $group_role->isAdmin() ); $calculated_permissions->addItem($item); Loading @@ -119,21 +121,17 @@ class DefaultGroupPermissionCalculator extends GroupPermissionCalculatorBase { // If the member's roles change, so do the permissions. $calculated_permissions->addCacheableDependency($group_membership); $permission_sets = []; foreach ($group_membership->getRoles() as $group_role) { $permission_sets[] = $group_role->getPermissions(); $calculated_permissions->addCacheableDependency($group_role); } $permissions = $permission_sets ? array_merge(...$permission_sets) : []; $item = new CalculatedGroupPermissionsItem( CalculatedGroupPermissionsItemInterface::SCOPE_GROUP, $group_membership->getGroup()->id(), $permissions $group_role->getPermissions(), $group_role->isAdmin() ); $calculated_permissions->addCacheableDependency($group_role); $calculated_permissions->addItem($item); } } return $calculated_permissions; } Loading Loading
config/schema/group.schema.yml +3 −0 Changes for config/schema/group.schema.yml: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -63,6 +63,9 @@ group.role.*: weight: type: 'integer' label: 'Weight' admin: type: 'boolean' label: 'Group role is an admin role' internal: type: 'boolean' label: 'Group role is used internally' Loading
group.group.permissions.yml +0 −5 Changes for group.group.permissions.yml: 0 added lines, 5 removed lines. Original line number Diff line number Diff line # @todo Remove god-mode permission in 8.2.0 release, use 'is_admin' flag on role instead. administer group: title: 'Administer group' description: 'Administer the group, its content and members' restrict access: TRUE view group: title: 'View published group' view any unpublished group: Loading
group.install +18 −0 Changes for group.install: 18 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -84,3 +84,21 @@ function group_update_9202() { $role->save(TRUE); } } /** * Convert group roles with the 'administer group' permission to admin roles. */ function group_update_9203() { $config_factory = \Drupal::configFactory(); foreach ($config_factory->listAll('group.role.') as $config_name) { $role = $config_factory->getEditable($config_name); if (in_array('administer group', $role->get('permissions'), TRUE)) { $role->set('permissions', []); $role->set('admin', TRUE); } else { $role->set('admin', FALSE); } $role->save(TRUE); } }
src/Access/CalculatedGroupPermissionsItem.php +3 −8 Changes for src/Access/CalculatedGroupPermissionsItem.php: 3 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -49,16 +49,11 @@ class CalculatedGroupPermissionsItem implements CalculatedGroupPermissionsItemIn * @param bool $is_admin * (optional) Whether the item grants admin privileges. */ public function __construct($scope, $identifier, $permissions, $is_admin = NULL) { public function __construct($scope, $identifier, $permissions, $is_admin = FALSE) { $this->scope = $scope; $this->identifier = $identifier; $this->permissions = array_unique($permissions); // @todo Rework for group 8.2.x to no longer use the admin permission. // @todo Do make flag default to FALSE and pass role's isAdmin flag instead. $this->isAdmin = isset($is_admin) ? $is_admin : in_array('administer group', $permissions, TRUE); $this->permissions = $is_admin ? [] : array_unique($permissions); $this->isAdmin = $is_admin; } /** Loading
src/Access/DefaultGroupPermissionCalculator.php +8 −10 Changes for src/Access/DefaultGroupPermissionCalculator.php: 8 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -65,7 +65,8 @@ class DefaultGroupPermissionCalculator extends GroupPermissionCalculatorBase { $item = new CalculatedGroupPermissionsItem( CalculatedGroupPermissionsItemInterface::SCOPE_GROUP_TYPE, $group_type_id, $group_role->getPermissions() $group_role->getPermissions(), $group_role->isAdmin() ); $calculated_permissions->addItem($item); Loading Loading @@ -95,7 +96,8 @@ class DefaultGroupPermissionCalculator extends GroupPermissionCalculatorBase { $item = new CalculatedGroupPermissionsItem( CalculatedGroupPermissionsItemInterface::SCOPE_GROUP_TYPE, $group_type_id, $group_role->getPermissions() $group_role->getPermissions(), $group_role->isAdmin() ); $calculated_permissions->addItem($item); Loading @@ -119,21 +121,17 @@ class DefaultGroupPermissionCalculator extends GroupPermissionCalculatorBase { // If the member's roles change, so do the permissions. $calculated_permissions->addCacheableDependency($group_membership); $permission_sets = []; foreach ($group_membership->getRoles() as $group_role) { $permission_sets[] = $group_role->getPermissions(); $calculated_permissions->addCacheableDependency($group_role); } $permissions = $permission_sets ? array_merge(...$permission_sets) : []; $item = new CalculatedGroupPermissionsItem( CalculatedGroupPermissionsItemInterface::SCOPE_GROUP, $group_membership->getGroup()->id(), $permissions $group_role->getPermissions(), $group_role->isAdmin() ); $calculated_permissions->addCacheableDependency($group_role); $calculated_permissions->addItem($item); } } return $calculated_permissions; } Loading