summaryrefslogtreecommitdiff
path: root/app/finders
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders')
-rw-r--r--app/finders/personal_access_tokens_finder.rb56
1 files changed, 31 insertions, 25 deletions
diff --git a/app/finders/personal_access_tokens_finder.rb b/app/finders/personal_access_tokens_finder.rb
index ad3f7f4a437..7b9a2f6c0bb 100644
--- a/app/finders/personal_access_tokens_finder.rb
+++ b/app/finders/personal_access_tokens_finder.rb
@@ -1,41 +1,47 @@
class PersonalAccessTokensFinder
- def initialize(user, params = {})
- @user = user
+ attr_accessor :params
+
+ def initialize(params = {})
@params = params
end
- def execute
- pat_id = token_id?
- personal_access_tokens = @user.personal_access_tokens
- personal_access_tokens = personal_access_tokens.impersonation if impersonation?
+ def execute(token: nil, id: nil)
+ tokens = by_impersonation
- return find_token_by_id(personal_access_tokens, pat_id) if pat_id
+ return tokens.find_by_token(token) if token
+ return tokens.find_by_id(id) if id
- case state?
- when 'active'
- personal_access_tokens.active
- when 'inactive'
- personal_access_tokens.inactive
- else
- personal_access_tokens
- end
+ tokens = by_state(tokens)
+ tokens.order(@params[:order]) if @params[:order]
+
+ tokens
end
private
- def state?
- @params[:state].presence
- end
-
- def impersonation?
- @params[:impersonation].presence
+ def personal_access_tokens
+ @params[:user] ? @params[:user].personal_access_tokens : PersonalAccessToken.all
end
- def token_id?
- @params[:personal_access_token_id].presence
+ def by_impersonation
+ case @params[:impersonation]
+ when true
+ personal_access_tokens.with_impersonation
+ when false
+ personal_access_tokens.without_impersonation
+ else
+ personal_access_tokens
+ end
end
- def find_token_by_id(personal_access_tokens, pat_id)
- personal_access_tokens.find_by(id: pat_id)
+ def by_state(tokens)
+ case @params[:state]
+ when 'active'
+ tokens.active
+ when 'inactive'
+ tokens.inactive
+ else
+ tokens
+ end
end
end