mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 01:47:18 +02:00
Refactor domain transfer
This commit is contained in:
parent
d88364a926
commit
4c4488c303
2 changed files with 19 additions and 44 deletions
|
@ -56,25 +56,26 @@ class Epp::DomainsController < EppController
|
||||||
|
|
||||||
def transfer
|
def transfer
|
||||||
authorize! :transfer, @domain, @password
|
authorize! :transfer, @domain, @password
|
||||||
|
action = params[:parsed_frame].css('transfer').first[:op]
|
||||||
|
|
||||||
if domain_transfer_params[:action] == 'query'
|
if action == 'query'
|
||||||
if @domain.pending_transfer
|
if @domain.pending_transfer
|
||||||
@domain_transfer = @domain.pending_transfer
|
@domain_transfer = @domain.pending_transfer
|
||||||
else
|
else
|
||||||
@domain_transfer = @domain.query_transfer(domain_transfer_params, params[:parsed_frame])
|
@domain_transfer = @domain.query_transfer(params[:parsed_frame], current_user)
|
||||||
handle_errors(@domain) and return unless @domain_transfer
|
handle_errors(@domain) and return unless @domain_transfer
|
||||||
end
|
end
|
||||||
elsif domain_transfer_params[:action] == 'approve'
|
elsif action == 'approve'
|
||||||
if @domain.pending_transfer
|
if @domain.pending_transfer
|
||||||
@domain_transfer = @domain.approve_transfer(domain_transfer_params, params[:parsed_frame])
|
@domain_transfer = @domain.approve_transfer(params[:parsed_frame], current_user)
|
||||||
handle_errors(@domain) and return unless @domain_transfer
|
handle_errors(@domain) and return unless @domain_transfer
|
||||||
else
|
else
|
||||||
epp_errors << { code: '2303', msg: I18n.t('pending_transfer_was_not_found') }
|
epp_errors << { code: '2303', msg: I18n.t('pending_transfer_was_not_found') }
|
||||||
handle_errors(@domain) and return
|
handle_errors(@domain) and return
|
||||||
end
|
end
|
||||||
elsif domain_transfer_params[:action] == 'reject'
|
elsif action == 'reject'
|
||||||
if @domain.pending_transfer
|
if @domain.pending_transfer
|
||||||
@domain_transfer = @domain.reject_transfer(domain_transfer_params, params[:parsed_frame])
|
@domain_transfer = @domain.reject_transfer(params[:parsed_frame], current_user)
|
||||||
handle_errors(@domain) and return unless @domain_transfer
|
handle_errors(@domain) and return unless @domain_transfer
|
||||||
else
|
else
|
||||||
epp_errors << { code: '2303', msg: I18n.t('pending_transfer_was_not_found') }
|
epp_errors << { code: '2303', msg: I18n.t('pending_transfer_was_not_found') }
|
||||||
|
@ -159,14 +160,6 @@ class Epp::DomainsController < EppController
|
||||||
requires 'name'
|
requires 'name'
|
||||||
end
|
end
|
||||||
|
|
||||||
def domain_transfer_params
|
|
||||||
res = {}
|
|
||||||
res[:pw] = params[:parsed_frame].css('pw').first.try(:text)
|
|
||||||
res[:action] = params[:parsed_frame].css('transfer').first[:op]
|
|
||||||
res[:current_user] = current_user
|
|
||||||
res
|
|
||||||
end
|
|
||||||
|
|
||||||
def find_domain
|
def find_domain
|
||||||
domain_name = params[:parsed_frame].css('name').text.strip.downcase
|
domain_name = params[:parsed_frame].css('name').text.strip.downcase
|
||||||
@domain = Epp::Domain.find_by(name: domain_name)
|
@domain = Epp::Domain.find_by(name: domain_name)
|
||||||
|
|
|
@ -386,8 +386,8 @@ class Epp::Domain < Domain
|
||||||
### TRANSFER ###
|
### TRANSFER ###
|
||||||
|
|
||||||
# rubocop: disable Metrics/MethodLength
|
# rubocop: disable Metrics/MethodLength
|
||||||
def query_transfer(params, parsed_frame)
|
def query_transfer(frame, current_user)
|
||||||
return false unless can_be_transferred_to?(params[:current_user].registrar)
|
return false unless can_be_transferred_to?(current_user.registrar)
|
||||||
|
|
||||||
transaction do
|
transaction do
|
||||||
begin
|
begin
|
||||||
|
@ -395,7 +395,7 @@ class Epp::Domain < Domain
|
||||||
dt = domain_transfers.create!(
|
dt = domain_transfers.create!(
|
||||||
status: DomainTransfer::PENDING,
|
status: DomainTransfer::PENDING,
|
||||||
transfer_requested_at: Time.zone.now,
|
transfer_requested_at: Time.zone.now,
|
||||||
transfer_to: params[:current_user].registrar,
|
transfer_to: current_user.registrar,
|
||||||
transfer_from: registrar
|
transfer_from: registrar
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -410,16 +410,16 @@ class Epp::Domain < Domain
|
||||||
status: DomainTransfer::SERVER_APPROVED,
|
status: DomainTransfer::SERVER_APPROVED,
|
||||||
transfer_requested_at: Time.zone.now,
|
transfer_requested_at: Time.zone.now,
|
||||||
transferred_at: Time.zone.now,
|
transferred_at: Time.zone.now,
|
||||||
transfer_to: params[:current_user].registrar,
|
transfer_to: current_user.registrar,
|
||||||
transfer_from: registrar
|
transfer_from: registrar
|
||||||
)
|
)
|
||||||
|
|
||||||
generate_auth_info
|
generate_auth_info
|
||||||
|
|
||||||
self.registrar = params[:current_user].registrar
|
self.registrar = current_user.registrar
|
||||||
end
|
end
|
||||||
|
|
||||||
attach_legal_document(self.class.parse_legal_document_from_frame(parsed_frame))
|
attach_legal_document(self.class.parse_legal_document_from_frame(frame))
|
||||||
save!(validate: false)
|
save!(validate: false)
|
||||||
|
|
||||||
return dt
|
return dt
|
||||||
|
@ -431,9 +431,9 @@ class Epp::Domain < Domain
|
||||||
end
|
end
|
||||||
# rubocop: enable Metrics/MethodLength
|
# rubocop: enable Metrics/MethodLength
|
||||||
|
|
||||||
def approve_transfer(params, parsed_frame)
|
def approve_transfer(frame, current_user)
|
||||||
pt = pending_transfer
|
pt = pending_transfer
|
||||||
if params[:current_user].registrar != pt.transfer_from
|
if current_user.registrar != pt.transfer_from
|
||||||
add_epp_error('2304', nil, nil, I18n.t('transfer_can_be_approved_only_by_current_registrar'))
|
add_epp_error('2304', nil, nil, I18n.t('transfer_can_be_approved_only_by_current_registrar'))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -449,7 +449,7 @@ class Epp::Domain < Domain
|
||||||
|
|
||||||
self.registrar = pt.transfer_to
|
self.registrar = pt.transfer_to
|
||||||
|
|
||||||
attach_legal_document(self.class.parse_legal_document_from_frame(parsed_frame))
|
attach_legal_document(self.class.parse_legal_document_from_frame(frame))
|
||||||
save!(validate: false)
|
save!(validate: false)
|
||||||
rescue => _e
|
rescue => _e
|
||||||
add_epp_error('2306', nil, nil, I18n.t('action_failed_due_to_server_error'))
|
add_epp_error('2306', nil, nil, I18n.t('action_failed_due_to_server_error'))
|
||||||
|
@ -460,9 +460,9 @@ class Epp::Domain < Domain
|
||||||
pt
|
pt
|
||||||
end
|
end
|
||||||
|
|
||||||
def reject_transfer(params, parsed_frame)
|
def reject_transfer(frame, current_user)
|
||||||
pt = pending_transfer
|
pt = pending_transfer
|
||||||
if params[:current_user].registrar != pt.transfer_from
|
if current_user.registrar != pt.transfer_from
|
||||||
add_epp_error('2304', nil, nil, I18n.t('transfer_can_be_rejected_only_by_current_registrar'))
|
add_epp_error('2304', nil, nil, I18n.t('transfer_can_be_rejected_only_by_current_registrar'))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -473,7 +473,7 @@ class Epp::Domain < Domain
|
||||||
status: DomainTransfer::CLIENT_REJECTED
|
status: DomainTransfer::CLIENT_REJECTED
|
||||||
)
|
)
|
||||||
|
|
||||||
attach_legal_document(self.class.parse_legal_document_from_frame(parsed_frame))
|
attach_legal_document(self.class.parse_legal_document_from_frame(frame))
|
||||||
save!(validate: false)
|
save!(validate: false)
|
||||||
rescue => _e
|
rescue => _e
|
||||||
add_epp_error('2306', nil, nil, I18n.t('action_failed_due_to_server_error'))
|
add_epp_error('2306', nil, nil, I18n.t('action_failed_due_to_server_error'))
|
||||||
|
@ -484,24 +484,6 @@ class Epp::Domain < Domain
|
||||||
pt
|
pt
|
||||||
end
|
end
|
||||||
|
|
||||||
def approve_pending_transfer(current_user)
|
|
||||||
pt = pending_transfer
|
|
||||||
if current_user.registrar != pt.transfer_from
|
|
||||||
add_epp_error('2304', nil, nil, I18n.t('transfer_can_be_approved_only_by_current_registrar'))
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
pt.update(
|
|
||||||
status: DomainTransfer::CLIENT_APPROVED,
|
|
||||||
transferred_at: Time.zone.now
|
|
||||||
)
|
|
||||||
|
|
||||||
generate_auth_info
|
|
||||||
|
|
||||||
self.registrar = pt.transfer_to
|
|
||||||
save(validate: false)
|
|
||||||
end
|
|
||||||
|
|
||||||
# rubocop:disable Metrics/MethodLength
|
# rubocop:disable Metrics/MethodLength
|
||||||
def keyrelay(parsed_frame, requester)
|
def keyrelay(parsed_frame, requester)
|
||||||
if registrar == requester
|
if registrar == requester
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue