mirror of
https://github.com/internetee/registry.git
synced 2025-07-27 21:16:12 +02:00
78 lines
2.1 KiB
Ruby
78 lines
2.1 KiB
Ruby
require 'serializers/repp/api_user'
|
|
module Repp
|
|
module V1
|
|
class ApiUsersController < BaseController
|
|
before_action :find_api_user, only: %i[show update destroy]
|
|
load_and_authorize_resource
|
|
|
|
THROTTLED_ACTIONS = %i[index show create update destroy].freeze
|
|
include Shunter::Integration::Throttle
|
|
|
|
api :GET, '/repp/v1/api_users'
|
|
desc 'Get all api users'
|
|
def index
|
|
users = current_user.registrar.api_users
|
|
|
|
render_success(data: { users: serialized_users(users),
|
|
count: users.count })
|
|
end
|
|
|
|
api :GET, '/repp/v1/api_users/:id'
|
|
desc 'Get a specific api user'
|
|
def show
|
|
serializer = Serializers::Repp::ApiUser.new(@api_user)
|
|
render_success(data: { user: serializer.to_json, roles: ApiUser::ROLES })
|
|
end
|
|
|
|
api :POST, '/repp/v1/api_users'
|
|
desc 'Create a new api user'
|
|
def create
|
|
@api_user = current_user.registrar.api_users.build(api_user_params)
|
|
@api_user.active = api_user_params[:active]
|
|
unless @api_user.save
|
|
handle_non_epp_errors(@api_user)
|
|
return
|
|
end
|
|
|
|
render_success(data: { api_user: { id: @api_user.id } })
|
|
end
|
|
|
|
api :PUT, '/repp/v1/api_users/:id'
|
|
desc 'Update api user'
|
|
def update
|
|
unless @api_user.update(api_user_params)
|
|
handle_non_epp_errors(@api_user)
|
|
return
|
|
end
|
|
|
|
render_success(data: { api_user: { id: @api_user.id } })
|
|
end
|
|
|
|
api :DELETE, '/repp/v1/api_users/:id'
|
|
desc 'Delete a specific api user'
|
|
def destroy
|
|
unless @api_user.destroy
|
|
handle_non_epp_errors(@api_user)
|
|
return
|
|
end
|
|
|
|
render_success
|
|
end
|
|
|
|
private
|
|
|
|
def find_api_user
|
|
@api_user = current_user.registrar.api_users.find(params[:id])
|
|
end
|
|
|
|
def api_user_params
|
|
params.require(:api_user).permit(:username, :plain_text_password, :active,
|
|
:identity_code, { roles: [] })
|
|
end
|
|
|
|
def serialized_users(users)
|
|
users.map { |i| Serializers::Repp::ApiUser.new(i).to_json }
|
|
end
|
|
end
|
|
end
|
|
end
|