mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 05:34:46 +02:00
31 lines
802 B
Ruby
31 lines
802 B
Ruby
module Contact::Transferable
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
validates :auth_info, presence: true
|
|
after_initialize :generate_auth_info, if: -> { new_record? && auth_info.blank? }
|
|
end
|
|
|
|
def transfer(new_registrar)
|
|
return identical(new_registrar) if identical(new_registrar)
|
|
|
|
new_contact = dup
|
|
new_contact.registrar = new_registrar
|
|
new_contact.original = self
|
|
new_contact.code = nil
|
|
new_contact.regenerate_code
|
|
new_contact.regenerate_auth_info
|
|
new_contact.remove_address unless self.class.address_processing?
|
|
new_contact.uuid = nil
|
|
new_contact.save(validate: false)
|
|
new_contact
|
|
end
|
|
|
|
protected
|
|
|
|
def generate_auth_info
|
|
self.auth_info = SecureRandom.hex(11)
|
|
end
|
|
|
|
alias_method :regenerate_auth_info, :generate_auth_info
|
|
end
|