28 lines
563 B
Ruby
28 lines
563 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module DeployKeys
|
||
|
class CollectKeysService
|
||
|
def initialize(project, current_user)
|
||
|
@project = project
|
||
|
@current_user = current_user
|
||
|
end
|
||
|
|
||
|
def execute
|
||
|
return [] unless current_user && project && user_can_read_project
|
||
|
|
||
|
project.deploy_keys_projects
|
||
|
.with_deploy_keys
|
||
|
.with_write_access
|
||
|
.map(&:deploy_key)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def user_can_read_project
|
||
|
Ability.allowed?(current_user, :read_project, project)
|
||
|
end
|
||
|
|
||
|
attr_reader :project, :current_user
|
||
|
end
|
||
|
end
|