66 lines
1.8 KiB
Ruby
66 lines
1.8 KiB
Ruby
module API
|
|
module V2
|
|
module Management
|
|
class Members < Grape::API
|
|
|
|
desc 'Create a member.' do
|
|
@settings[:scope] = :write_members
|
|
end
|
|
params do
|
|
requires :email,
|
|
type: String,
|
|
desc: 'User email.'
|
|
requires :uid,
|
|
type: String,
|
|
desc: 'The shared user ID.'
|
|
requires :level,
|
|
type: Integer,
|
|
desc: 'User level.'
|
|
requires :role,
|
|
type: String,
|
|
desc: 'User role.'
|
|
requires :state,
|
|
type: String,
|
|
desc: 'User state.'
|
|
requires :group,
|
|
type: String,
|
|
desc: 'User group'
|
|
end
|
|
post '/members' do
|
|
declared_params = declared(params)
|
|
|
|
member = Member.create!(declared_params)
|
|
present member, with: Entities::Member
|
|
status 200
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
body errors: e.message
|
|
status 422
|
|
end
|
|
|
|
desc 'Set user group.' do
|
|
@settings[:scope] = :write_members
|
|
end
|
|
params do
|
|
requires :uid,
|
|
type: String,
|
|
desc: 'The shared user ID.'
|
|
requires :group,
|
|
type: String,
|
|
desc: 'User gruop'
|
|
end
|
|
post '/members/group' do
|
|
declared_params = declared(params)
|
|
|
|
member = Member.find_by!(uid: declared_params[:uid])
|
|
member.update!(group: declared_params[:group])
|
|
present member, with: Entities::Member
|
|
status 200
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
body errors: e.message
|
|
status 422
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|