[Bug] Users with custom roles derived from maintainer and with " Manage group members" permission cannot see "Invite groups" option

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

  • Close this issue

In a project or group, when a user has a custom role that is derived from the maintainer base role, the "Invite groups" option is not visible in the invite modal. The custom role has the Manage group members" permission.

Current behavior

Users with custom roles based on maintainer permissions cannot see the "Invite groups" button/option when trying to invite members to a project or group.

Project Level

image

Group Level

image

Expected behavior

Users with custom roles derived from maintainer and "Manage group members" permission should have group invitation capabilities, including the ability to see and use the "Invite groups" option.

Steps to reproduce

  1. Create a custom role derived from maintainer base role, select the "Manage group members" permission.
  2. Assign this custom role to a user in a project or group
  3. Log in as that user
  4. Navigate to the project/group manage members page
  5. Observe that the "Invite groups" option is missing

Impact

This prevents users with custom maintainer-derived roles from performing group invitations, limiting their ability to manage project/group access as intended by their role permissions.

Implementation plan

  1. Fix the permission check logic to properly recognize custom roles derived from maintainer for group invitation functionality
  2. Ensure the "Invite groups" option is visible for users with appropriate custom role permissions
  3. Add feature specs to prevent regression of this functionality
  4. Test across different contexts (project-level and group-level invitations)

Additional context

This issue is related to custom roles functionality and may be connected to the permission inheritance system for custom roles derived from base roles.

Edited Oct 20, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading