22 lines
686 B
Ruby
22 lines
686 B
Ruby
# frozen_string_literal: true
|
|
|
|
module DeployKeys
|
|
class DeployKeyEntity < BasicDeployKeyEntity
|
|
expose :deploy_keys_projects, using: DeployKeysProjectEntity do |deploy_key|
|
|
deploy_key.deploy_keys_projects.select do |deploy_key_project|
|
|
!deploy_key_project.project&.pending_delete? &&
|
|
(allowed_to_read_project?(deploy_key_project.project) || options[:user].can_admin_all_resources?)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def allowed_to_read_project?(project)
|
|
if options[:readable_project_ids]
|
|
options[:readable_project_ids].include?(project.id)
|
|
else
|
|
Ability.allowed?(options[:user], :read_project, project)
|
|
end
|
|
end
|
|
end
|
|
end
|