mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 05:26:17 +02:00
Updated REPP API for new registrar portal
This commit is contained in:
parent
e17b21436d
commit
a5ffce290d
61 changed files with 1269 additions and 408 deletions
|
@ -1,12 +1,12 @@
|
|||
module Repp
|
||||
module V1
|
||||
class BaseController < ActionController::API # rubocop:disable Metrics/ClassLength
|
||||
attr_reader :current_user
|
||||
|
||||
around_action :log_request
|
||||
before_action :authenticate_user
|
||||
before_action :validate_webclient_ca
|
||||
before_action :check_ip_restriction
|
||||
attr_reader :current_user
|
||||
|
||||
before_action :set_paper_trail_whodunnit
|
||||
|
||||
private
|
||||
|
@ -22,6 +22,10 @@ module Repp
|
|||
rescue Apipie::ParamInvalid => e
|
||||
@response = { code: 2005, message: e.message.gsub(/\n/, '. ') }
|
||||
render(json: @response, status: :bad_request)
|
||||
rescue CanCan::AccessDenied => e
|
||||
@response = { code: 2201, message: 'Authorization error' }
|
||||
logger.error e.to_s
|
||||
render(json: @response, status: :unauthorized)
|
||||
ensure
|
||||
create_repp_log
|
||||
end
|
||||
|
@ -65,7 +69,6 @@ module Repp
|
|||
|
||||
def handle_errors(obj = nil)
|
||||
@epp_errors ||= ActiveModel::Errors.new(self)
|
||||
|
||||
if obj
|
||||
obj.construct_epp_errors
|
||||
obj.errors.each { |error| @epp_errors.import error }
|
||||
|
@ -85,6 +88,12 @@ module Repp
|
|||
render(json: @response, status: status)
|
||||
end
|
||||
|
||||
def handle_non_epp_errors(obj, message = nil)
|
||||
@response = { message: message || obj.errors.full_messages.join(', '),
|
||||
data: {} }
|
||||
render(json: @response, status: :bad_request)
|
||||
end
|
||||
|
||||
def basic_token
|
||||
pattern = /^Basic /
|
||||
header = request.headers['Authorization']
|
||||
|
@ -94,7 +103,8 @@ module Repp
|
|||
|
||||
def authenticate_user
|
||||
username, password = Base64.urlsafe_decode64(basic_token).split(':')
|
||||
@current_user ||= ApiUser.find_by(username: username, plain_text_password: password)
|
||||
@current_user ||= ApiUser.find_by(username: username, plain_text_password: password,
|
||||
active: true)
|
||||
|
||||
return if @current_user
|
||||
|
||||
|
@ -123,6 +133,7 @@ module Repp
|
|||
return unless webclient_request?
|
||||
|
||||
request_name = request.env['HTTP_SSL_CLIENT_S_DN_CN']
|
||||
|
||||
webclient_cn = ENV['webclient_cert_common_name'] || 'webclient'
|
||||
return if request_name == webclient_cn
|
||||
|
||||
|
@ -135,6 +146,16 @@ module Repp
|
|||
def logger
|
||||
Rails.logger
|
||||
end
|
||||
|
||||
def auth_values_to_data(registrar:)
|
||||
data = current_user.as_json(only: %i[id username roles])
|
||||
data[:registrar_name] = registrar.name
|
||||
data[:legaldoc_mandatory] = registrar.legaldoc_mandatory?
|
||||
data[:balance] = { amount: registrar.cash_account&.balance,
|
||||
currency: registrar.cash_account&.currency }
|
||||
data[:abilities] = Ability.new(current_user).permissions
|
||||
data
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue