29 lines
982 B
Ruby
29 lines
982 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Packages
|
|
module FinderHelper
|
|
extend ActiveSupport::Concern
|
|
|
|
private
|
|
|
|
def packages_visible_to_user(user, within_group:)
|
|
return ::Packages::Package.none unless within_group
|
|
return ::Packages::Package.none unless Ability.allowed?(user, :read_package, within_group)
|
|
|
|
projects = projects_visible_to_reporters(user, within_group.self_and_descendants.select(:id))
|
|
::Packages::Package.for_projects(projects.select(:id))
|
|
end
|
|
|
|
def projects_visible_to_user(user, within_group:)
|
|
return ::Project.none unless within_group
|
|
return ::Project.none unless Ability.allowed?(user, :read_package, within_group)
|
|
|
|
projects_visible_to_reporters(user, within_group.self_and_descendants.select(:id))
|
|
end
|
|
|
|
def projects_visible_to_reporters(user, namespace_ids)
|
|
::Project.in_namespace(namespace_ids)
|
|
.public_or_visible_to_user(user, ::Gitlab::Access::REPORTER)
|
|
end
|
|
end
|
|
end
|