summaryrefslogtreecommitdiff
path: root/app/finders
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-10-20 09:40:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-10-20 09:40:42 +0000
commitee664acb356f8123f4f6b00b73c1e1cf0866c7fb (patch)
treef8479f94a28f66654c6a4f6fb99bad6b4e86a40e /app/finders
parent62f7d5c5b69180e82ae8196b7b429eeffc8e7b4f (diff)
downloadgitlab-ce-ee664acb356f8123f4f6b00b73c1e1cf0866c7fb.tar.gz
Add latest changes from gitlab-org/gitlab@15-5-stable-eev15.5.0-rc42
Diffstat (limited to 'app/finders')
-rw-r--r--app/finders/ci/runners_finder.rb6
-rw-r--r--app/finders/clusters/agent_authorizations_finder.rb36
-rw-r--r--app/finders/groups/accepting_group_transfers_finder.rb7
-rw-r--r--app/finders/labels_finder.rb2
-rw-r--r--app/finders/packages/group_packages_finder.rb2
-rw-r--r--app/finders/packages/helm/packages_finder.rb2
-rw-r--r--app/finders/packages/nuget/package_finder.rb2
-rw-r--r--app/finders/packages/package_finder.rb2
-rw-r--r--app/finders/packages/packages_finder.rb2
-rw-r--r--app/finders/personal_access_tokens_finder.rb42
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