diff options
Diffstat (limited to 'app/finders')
-rw-r--r-- | app/finders/ci/runners_finder.rb | 6 | ||||
-rw-r--r-- | app/finders/clusters/agent_authorizations_finder.rb | 36 | ||||
-rw-r--r-- | app/finders/groups/accepting_group_transfers_finder.rb | 7 | ||||
-rw-r--r-- | app/finders/labels_finder.rb | 2 | ||||
-rw-r--r-- | app/finders/packages/group_packages_finder.rb | 2 | ||||
-rw-r--r-- | app/finders/packages/helm/packages_finder.rb | 2 | ||||
-rw-r--r-- | app/finders/packages/nuget/package_finder.rb | 2 | ||||
-rw-r--r-- | app/finders/packages/package_finder.rb | 2 | ||||
-rw-r--r-- | app/finders/packages/packages_finder.rb | 2 | ||||
-rw-r--r-- | app/finders/personal_access_tokens_finder.rb | 42 |
10 files changed, 86 insertions, 17 deletions
diff --git a/app/finders/ci/runners_finder.rb b/app/finders/ci/runners_finder.rb index 774947a35b7..d0d98a59677 100644 --- a/app/finders/ci/runners_finder.rb +++ b/app/finders/ci/runners_finder.rb @@ -55,6 +55,12 @@ module Ci Ci::Runner.belonging_to_group(@group.id) when :descendants, nil Ci::Runner.belonging_to_group_or_project_descendants(@group.id) + when :all_available + unless can?(@current_user, :read_group_all_available_runners, @group) + raise Gitlab::Access::AccessDeniedError + end + + Ci::Runner.usable_from_scope(@group) else raise ArgumentError, 'Invalid membership filter' end diff --git a/app/finders/clusters/agent_authorizations_finder.rb b/app/finders/clusters/agent_authorizations_finder.rb index 373cf7fe8b9..8b939f5d646 100644 --- a/app/finders/clusters/agent_authorizations_finder.rb +++ b/app/finders/clusters/agent_authorizations_finder.rb @@ -24,13 +24,21 @@ module Clusters # rubocop: disable CodeReuse/ActiveRecord def project_authorizations - ancestor_ids = project.group ? project.ancestors.select(:id) : project.namespace_id + namespace_ids = if project.group + if include_descendants? + all_namespace_ids + else + ancestor_namespace_ids + end + else + project.namespace_id + end Clusters::Agents::ProjectAuthorization .where(project_id: project.id) .joins(agent: :project) .preload(agent: :project) - .where(cluster_agents: { projects: { namespace_id: ancestor_ids } }) + .where(cluster_agents: { projects: { namespace_id: namespace_ids } }) .with_available_ci_access_fields(project) .to_a end @@ -49,17 +57,35 @@ module Clusters authorizations[:group_id].eq(ordered_ancestors_cte.table[:id]) ).join_sources - Clusters::Agents::GroupAuthorization + authorized_groups = Clusters::Agents::GroupAuthorization .with(ordered_ancestors_cte.to_arel) .joins(cte_join_sources) .joins(agent: :project) - .where('projects.namespace_id IN (SELECT id FROM ordered_ancestors)') .with_available_ci_access_fields(project) .order(Arel.sql('agent_id, array_position(ARRAY(SELECT id FROM ordered_ancestors)::bigint[], agent_group_authorizations.group_id)')) .select('DISTINCT ON (agent_id) agent_group_authorizations.*') .preload(agent: :project) - .to_a + + authorized_groups = if include_descendants? + authorized_groups.where(projects: { namespace_id: all_namespace_ids }) + else + authorized_groups.where('projects.namespace_id IN (SELECT id FROM ordered_ancestors)') + end + + authorized_groups.to_a end # rubocop: enable CodeReuse/ActiveRecord + + def ancestor_namespace_ids + project.ancestors.select(:id) + end + + def all_namespace_ids + project.root_ancestor.self_and_descendants.select(:id) + end + + def include_descendants? + Feature.enabled?(:agent_authorization_include_descendants, project) + end end end diff --git a/app/finders/groups/accepting_group_transfers_finder.rb b/app/finders/groups/accepting_group_transfers_finder.rb index df67f940d20..c95318d0098 100644 --- a/app/finders/groups/accepting_group_transfers_finder.rb +++ b/app/finders/groups/accepting_group_transfers_finder.rb @@ -13,12 +13,7 @@ module Groups def execute return Group.none unless can_transfer_group? - items = if Feature.enabled?(:include_groups_from_group_shares_in_group_transfer_locations) - find_all_groups - else - find_groups - end - + items = find_all_groups items = by_search(items) sort(items) diff --git a/app/finders/labels_finder.rb b/app/finders/labels_finder.rb index ecd6270ed47..9f9d0da6efd 100644 --- a/app/finders/labels_finder.rb +++ b/app/finders/labels_finder.rb @@ -19,7 +19,7 @@ class LabelsFinder < UnionFinder items = with_title(items) items = by_subscription(items) items = by_search(items) - sort(items) + sort(items.with_preloaded_container) end private diff --git a/app/finders/packages/group_packages_finder.rb b/app/finders/packages/group_packages_finder.rb index 1d1ae59674a..3a068252d5c 100644 --- a/app/finders/packages/group_packages_finder.rb +++ b/app/finders/packages/group_packages_finder.rb @@ -22,7 +22,7 @@ module Packages def packages_for_group_projects(installable_only: false) packages = ::Packages::Package - .including_project_route + .including_project_namespace_route .including_tags .for_projects(group_projects_visible_to_current_user.select(:id)) .sort_by_attribute("#{params[:order_by]}_#{params[:sort]}") diff --git a/app/finders/packages/helm/packages_finder.rb b/app/finders/packages/helm/packages_finder.rb index c58d9292e9f..e1b831ca864 100644 --- a/app/finders/packages/helm/packages_finder.rb +++ b/app/finders/packages/helm/packages_finder.rb @@ -5,7 +5,7 @@ module Packages class PackagesFinder include ::Packages::FinderHelper - MAX_PACKAGES_COUNT = 300 + MAX_PACKAGES_COUNT = 1000 def initialize(project, channel) @project = project diff --git a/app/finders/packages/nuget/package_finder.rb b/app/finders/packages/nuget/package_finder.rb index 9ae52745bb2..23345f29198 100644 --- a/app/finders/packages/nuget/package_finder.rb +++ b/app/finders/packages/nuget/package_finder.rb @@ -15,7 +15,7 @@ module Packages result = base.nuget .has_version .with_name_like(@params[:package_name]) - result = result.with_version(@params[:package_version]) if @params[:package_version].present? + result = result.with_case_insensitive_version(@params[:package_version]) if @params[:package_version].present? result end end diff --git a/app/finders/packages/package_finder.rb b/app/finders/packages/package_finder.rb index e482a0503f0..9e667b7a63c 100644 --- a/app/finders/packages/package_finder.rb +++ b/app/finders/packages/package_finder.rb @@ -10,7 +10,7 @@ module Packages @project .packages .preload_pipelines - .including_project_route + .including_project_namespace_route .including_tags .displayable .find(@package_id) diff --git a/app/finders/packages/packages_finder.rb b/app/finders/packages/packages_finder.rb index b3d14e15953..31fbbfb7937 100644 --- a/app/finders/packages/packages_finder.rb +++ b/app/finders/packages/packages_finder.rb @@ -14,7 +14,7 @@ module Packages def execute packages = project.packages - .including_project_route + .including_project_namespace_route .including_tags packages = packages.preload_pipelines if preload_pipelines diff --git a/app/finders/personal_access_tokens_finder.rb b/app/finders/personal_access_tokens_finder.rb index 7d356c1014c..8403c531945 100644 --- a/app/finders/personal_access_tokens_finder.rb +++ b/app/finders/personal_access_tokens_finder.rb @@ -18,6 +18,12 @@ class PersonalAccessTokensFinder tokens = by_impersonation(tokens) tokens = by_state(tokens) tokens = by_owner_type(tokens) + tokens = by_revoked_state(tokens) + tokens = by_created_before(tokens) + tokens = by_created_after(tokens) + tokens = by_last_used_before(tokens) + tokens = by_last_used_after(tokens) + tokens = by_search(tokens) sort(tokens) end @@ -83,4 +89,40 @@ class PersonalAccessTokensFinder tokens end end + + def by_revoked_state(tokens) + return tokens unless params.has_key?(:revoked) + + params[:revoked] ? tokens.revoked : tokens.not_revoked + end + + def by_created_before(tokens) + return tokens unless params[:created_before] + + tokens.created_before(params[:created_before]) + end + + def by_created_after(tokens) + return tokens unless params[:created_after] + + tokens.created_after(params[:created_after]) + end + + def by_last_used_before(tokens) + return tokens unless params[:last_used_before] + + tokens.last_used_before(params[:last_used_before]) + end + + def by_last_used_after(tokens) + return tokens unless params[:last_used_after] + + tokens.last_used_after(params[:last_used_after]) + end + + def by_search(tokens) + return tokens unless params[:search] + + tokens.search(params[:search]) + end end |