There are multiple types of permissions across GitLab, and when implementing anything that deals with permissions, all of them should be considered. For more information, see:
- Predefined roles system: a general overview about predefined roles, user types, feature specific permissions or permissions dependencies.
- Authorizations: guidance on where to check permissions.
- Custom roles: guidance on how to work on custom role, how to introduce a new ability for custom roles, how to refactor permissions.