Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/clusters/agent_tokens_finder.rb')
-rw-r--r--app/finders/clusters/agent_tokens_finder.rb22
1 files changed, 14 insertions, 8 deletions
diff --git a/app/finders/clusters/agent_tokens_finder.rb b/app/finders/clusters/agent_tokens_finder.rb
index e241836e1dc..72692777bc6 100644
--- a/app/finders/clusters/agent_tokens_finder.rb
+++ b/app/finders/clusters/agent_tokens_finder.rb
@@ -2,24 +2,30 @@
module Clusters
class AgentTokensFinder
- def initialize(object, current_user, agent_id)
- @object = object
+ include FinderMethods
+
+ def initialize(agent, current_user, params = {})
+ @agent = agent
@current_user = current_user
- @agent_id = agent_id
+ @params = params
end
def execute
- raise_not_found_unless_can_read_cluster
+ return ::Clusters::AgentToken.none unless can_read_cluster_agents?
- object.cluster_agents.find(agent_id).agent_tokens
+ agent.agent_tokens.then { |agent_tokens| by_status(agent_tokens) }
end
private
- attr_reader :object, :current_user, :agent_id
+ attr_reader :agent, :current_user, :params
+
+ def by_status(agent_tokens)
+ params[:status].present? ? agent_tokens.with_status(params[:status]) : agent_tokens
+ end
- def raise_not_found_unless_can_read_cluster
- raise ActiveRecord::RecordNotFound unless current_user&.can?(:read_cluster, object)
+ def can_read_cluster_agents?
+ current_user&.can?(:read_cluster, agent&.project)
end
end
end