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
+ 64
18
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -18,7 +18,7 @@ def has_ability?
class << self
def allowed?(user, resource, ability)
return false unless resource.custom_roles_enabled?
return false if resource.respond_to?(:custom_roles_enabled?) && !resource.custom_roles_enabled?
new(user: user, resource: resource, ability: ability).has_ability?
end
@@ -32,20 +32,16 @@ def permission_enabled?
::MemberRole.permission_enabled?(ability)
end
def preloaded_member_roles_for_projects(projects)
def abilities_for_projects(projects)
::Preloaders::UserMemberRolesInProjectsPreloader.new(
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
def abilities_for_groups(groups)
::Preloaders::UserMemberRolesInGroupsPreloader.new(
groups: [resource],
groups: groups,
user: user
).execute
end
@@ -53,14 +49,15 @@ def preloaded_member_roles_for_group
def abilities_for(resource)
case resource
when ::Project
preloaded_member_roles_for_project[resource.id]
abilities_for_projects([resource])[resource.id]
when ::Group
preloaded_member_roles_for_group[resource.id]
abilities_for_groups([resource])[resource.id]
when Ci::Runner
::Preloaders::UserMemberRolesInProjectsPreloader.new(
projects: resource.projects,
user: user
).execute.flat_map { |(_project_id, abilities)| abilities }
if resource.project_type?
abilities_for_projects(resource.projects)
else
abilities_for_groups(resource.groups)
end.flat_map { |(_id, abilities)| abilities }
else
[]
end
Loading