mirror of
https://github.com/internetee/registry.git
synced 2025-06-05 20:27:30 +02:00
65 lines
1.5 KiB
Ruby
65 lines
1.5 KiB
Ruby
class ReservedDomain < ApplicationRecord
|
|
extend ToCsv
|
|
include Versions # version/reserved_domain_version.rb
|
|
include WhoisStatusPopulate
|
|
before_save :fill_empty_passwords
|
|
before_save :generate_data
|
|
before_save :sync_dispute_password
|
|
after_destroy :remove_data
|
|
|
|
validates :name, domain_name: true, uniqueness: true
|
|
|
|
alias_attribute :registration_code, :password
|
|
|
|
self.ignored_columns = %w[legacy_id]
|
|
|
|
class << self
|
|
def pw_for(domain_name)
|
|
name_in_ascii = SimpleIDN.to_ascii(domain_name)
|
|
by_domain(domain_name).first.try(:password) || by_domain(name_in_ascii).first.try(:password)
|
|
end
|
|
|
|
def by_domain name
|
|
where(name: name)
|
|
end
|
|
|
|
def new_password_for name
|
|
record = by_domain(name).first
|
|
return unless record
|
|
|
|
record.regenerate_password
|
|
record.save
|
|
end
|
|
end
|
|
|
|
def name= val
|
|
super SimpleIDN.to_unicode(val)
|
|
end
|
|
|
|
def fill_empty_passwords
|
|
regenerate_password if self.password.blank?
|
|
end
|
|
|
|
def regenerate_password
|
|
self.password = SecureRandom.hex
|
|
end
|
|
|
|
def sync_dispute_password
|
|
dispute = Dispute.active.find_by(domain_name: name)
|
|
self.password = dispute.password if dispute.present?
|
|
end
|
|
|
|
def generate_data
|
|
return if Domain.where(name: name).any?
|
|
|
|
wr = Whois::Record.find_or_initialize_by(name: name)
|
|
wr.json = @json = generate_json(wr, domain_status: 'Reserved') # we need @json to bind to class
|
|
wr.save
|
|
end
|
|
|
|
alias_method :update_whois_record, :generate_data
|
|
|
|
def remove_data
|
|
UpdateWhoisRecordJob.perform_later name, 'reserved'
|
|
end
|
|
end
|