Initial commit
This commit is contained in:
52
app/api/v2/admin/levels.rb
Normal file
52
app/api/v2/admin/levels.rb
Normal file
@@ -0,0 +1,52 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module V2
|
||||
module Admin
|
||||
# Admin functionality over levels table
|
||||
class Levels < Grape::API
|
||||
resource :levels do
|
||||
desc 'Returns array of permissions as paginated collection',
|
||||
failure: [
|
||||
{ code: 401, message: 'Invalid bearer token' }
|
||||
],
|
||||
success: API::V2::Entities::Level
|
||||
get do
|
||||
admin_authorize! :read, Level
|
||||
|
||||
present ::Level.all, with: API::V2::Entities::Level
|
||||
end
|
||||
|
||||
desc 'Change vip level',
|
||||
failure: [
|
||||
{ code: 400, message: 'Required params are empty' },
|
||||
{ code: 401, message: 'Invalid bearer token' },
|
||||
{ code: 422, message: 'Validation errors' }
|
||||
],
|
||||
success: API::V2::Entities::User
|
||||
params do
|
||||
requires :uid, type: String
|
||||
requires :level,
|
||||
values: { value: -> (p){ %w[2 3].include?(p) }, message: 'user.level.invalid' },
|
||||
default: '3',
|
||||
desc: 'change level from vip'
|
||||
end
|
||||
put do
|
||||
admin_authorize! :update, Profile
|
||||
|
||||
target_user = User.find_by(uid: params[:uid])
|
||||
return error!({ errors: ['admin.users.doesnt_exist'] }, 404) if target_user.nil?
|
||||
|
||||
error!({ errors: ['admin.superadmin_change'] }, 422) if target_user.superadmin? && !current_user.superadmin?
|
||||
|
||||
unless target_user.update(declared(params.except(:uid), include_missing: false))
|
||||
code_error!(target_user.errors.details, 422)
|
||||
end
|
||||
|
||||
present user, with: API::V2::Entities::User
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user