- Source: GL_GroupRole
- Destination: GL_GroupRole (subgroup), GL_ProjectRole
The traversable GL_InheritRole edge models automatic role inheritance down the GitLab namespace hierarchy. When a user holds a role in a parent group, they automatically inherit the equivalent role in all subgroups and all projects under that group — without requiring an explicit membership entry.
For each parent-group role, GL_InheritRole edges are created to:
- The equivalent-level role node in each direct subgroup (
GL_GroupRole → GL_GroupRole) - The equivalent-level role node in each project owned by the group (
GL_GroupRole → GL_ProjectRole)
This means traversing GL_HasRole → GL_InheritRole* from a user will reach all effective group and project roles the user holds through inheritance.
graph LR
user("fa:fa-user GL_User alice")
parentRole("fa:fa-user-tie GL_GroupRole myorg/Developer")
subRole("fa:fa-user-tie GL_GroupRole myorg/frontend/Developer")
projRole("fa:fa-user-tie GL_ProjectRole myorg/backend/Developer")
user -->|GL_HasRole| parentRole
parentRole -->|GL_InheritRole| subRole
parentRole -->|GL_InheritRole| projRole