diff options
Diffstat (limited to 'app/finders/clusters/agent_tokens_finder.rb')
-rw-r--r-- | app/finders/clusters/agent_tokens_finder.rb | 22 |
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 |