internetee-registry/app/controllers/client/domain_transfers_controller.rb
2014-09-24 17:58:48 +03:00

73 lines
2 KiB
Ruby

class Client::DomainTransfersController < ClientController
before_action :set_domain_transfer, only: [:show, :approve]
before_action :set_domain, only: [:create]
def new
@domain_transfer = DomainTransfer.new
end
def create
@domain_transfer = @domain.pending_transfer || @domain.domain_transfers.create(domain_transfer_params)
if can? :read, @domain_transfer
flash[:notice] = I18n.t('shared.domain_transfer_requested')
redirect_to [:client, @domain_transfer]
else
flash.now[:alert] = I18n.t('shared.other_registrar_has_already_requested_to_transfer_this_domain')
render 'new'
end
end
def approve
if can? :approve_as_client, @domain_transfer
@domain_transfer.approve_as_client
flash[:notice] = I18n.t('shared.domain_transfer_approved')
else
flash[:alert] = I18n.t('shared.failed_to_approve_domain_transfer')
end
redirect_to [:client, @domain_transfer]
end
private
def set_domain_transfer
@domain_transfer = DomainTransfer.find(params[:id])
end
def domain_transfer_params
ret = {
status: DomainTransfer::PENDING,
transfer_requested_at: Time.zone.now,
transfer_to: current_user.registrar,
transfer_from: @domain.registrar
}
wait_time = SettingGroup.domain_general.setting(:transfer_wait_time).value.to_i
if wait_time == 0
ret[:status] = DomainTransfer::SERVER_APPROVED
ret[:transferred_at] = Time.zone.now
end
ret
end
def set_domain
@domain_transfer = DomainTransfer.new
@domain = Domain.find_by(name: params[:domain_name])
if @domain
if @domain.auth_info != params[:domain_pw]
flash.now[:alert] = I18n.t('shared.password_invalid')
render 'new' and return
end
if @domain.registrar == current_user.registrar
flash.now[:alert] = I18n.t('shared.domain_already_belongs_to_the_querying_registrar')
render 'new' and return
end
else
flash.now[:alert] = I18n.t('shared.domain_was_not_found')
render 'new'
end
end
end