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
2 files
+ 29
19
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -12,13 +12,8 @@ def has_ability?
return false unless user.is_a?(User)
return false unless permission_enabled?
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)
abilities = abilities_for(resource)
abilities&.include?(ability)
end
class << self
@@ -37,18 +32,38 @@ def permission_enabled?
::MemberRole.permission_enabled?(ability)
end
def preloaded_member_roles_for_project
def preloaded_member_roles_for_projects(projects)
::Preloaders::UserMemberRolesInProjectsPreloader.new(
projects: [resource],
projects: projects,
user: user
).execute
end
def preloaded_member_roles_for_project
preloaded_member_roles_for_projects([resource])
end
def preloaded_member_roles_for_group
::Preloaders::UserMemberRolesInGroupsPreloader.new(
groups: [resource],
user: user
).execute
end
def abilities_for(resource)
case resource
when ::Project
preloaded_member_roles_for_project[resource.id]
when ::Group
preloaded_member_roles_for_group[resource.id]
when Ci::Runner
::Preloaders::UserMemberRolesInProjectsPreloader.new(
projects: resource.projects,
user: user
).execute.flat_map { |(_project_id, abilities)| abilities }
else
[]
end
end
end
end
Loading