Skip to content
Snippets Groups Projects

Add `admin_runners` custom role permission

Merged mo khan requested to merge mokhax/442851/admin_runners into master
All threads resolved!
Compare and Show latest version
6 files
+ 132
85
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -2,31 +2,31 @@
module Auth
class MemberRoleAbilityLoader
include Gitlab::Utils::StrongMemoize
def initialize(user:, resource:, ability: :undefined)
def initialize(user:, resource:, ability:)
@user = user
@resource = resource
@ability = ability
end
def has_ability?
allowed?(ability)
end
def allowed?(permission)
return false unless user.is_a?(User)
return false unless permission_enabled?(permission)
return false unless permission_enabled?
roles[resource.id]&.include?(permission)
roles = if resource.is_a?(::Project)
preloaded_member_roles_for_project[resource.id]
else # Group
preloaded_member_roles_for_group[resource.id]
end
roles&.include?(ability)
end
private
attr_reader :user, :resource, :ability
def permission_enabled?(permission)
::MemberRole.permission_enabled?(permission)
def permission_enabled?
::MemberRole.permission_enabled?(ability)
end
def preloaded_member_roles_for_project
@@ -42,14 +42,5 @@ def preloaded_member_roles_for_group
user: user
).execute
end
def roles
if resource.is_a?(::Project)
preloaded_member_roles_for_project
else # Group
preloaded_member_roles_for_group
end
end
strong_memoize_attr :roles
end
end
Loading