Initial commit
This commit is contained in:
41
app/api/v2/admin/api_keys.rb
Normal file
41
app/api/v2/admin/api_keys.rb
Normal file
@@ -0,0 +1,41 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module V2
|
||||
module Admin
|
||||
# Admin functionality over user api keys
|
||||
class APIKeys < Grape::API
|
||||
resource :api_keys do
|
||||
helpers ::API::V2::NamedParams
|
||||
helpers ::API::V2::Admin::NamedParams
|
||||
|
||||
desc 'List all api keys for selected account.',
|
||||
failure: [
|
||||
{ code: 401, message: 'Invalid bearer token' }
|
||||
],
|
||||
success: API::V2::Entities::APIKey
|
||||
params do
|
||||
requires :uid, type: String, allow_blank: false, desc: 'user uniq id'
|
||||
optional :ordering,
|
||||
values: { value: -> (p){ %w[asc desc].include?(p) }, message: 'api_keys.ordering.invalid_ordering' },
|
||||
default: 'asc',
|
||||
desc: 'If set, returned values will be sorted in specific order, defaults to \'asc\'.'
|
||||
optional :order_by,
|
||||
values: { value: -> (p){ APIKey.new.attributes.keys.include?(p) }, message: 'api_keys.ordering.invalid_attribute' },
|
||||
default: 'id',
|
||||
desc: 'Name of the field, which result will be ordered by.'
|
||||
use :pagination_filters
|
||||
end
|
||||
get do
|
||||
admin_authorize! :read, APIKey
|
||||
|
||||
target_user = User.find_by(uid: params[:uid])
|
||||
error!({ errors: ['admin.user.doesnt_exist'] }, 404) if target_user.nil?
|
||||
|
||||
target_user.api_keys.order(params[:order_by] => params[:ordering]).tap { |q| present paginate(q), with: API::V2::Entities::APIKey, except: [:secret] }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user