internetee-registry/app/models/reserved_domain.rb
Artur Beljajev fa52001be6 Upgrade to Rails 5.0
Closes #377
2019-11-15 15:26:33 +02:00

62 lines
1.4 KiB
Ruby

class ReservedDomain < ApplicationRecord
include Versions # version/reserved_domain_version.rb
before_save :fill_empty_passwords
before_save :generate_data
after_destroy :remove_data
validates :name, domain_name: true, uniqueness: true
alias_attribute :registration_code, :password
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 generate_data
return if Domain.where(name: name).any?
wr = Whois::Record.find_or_initialize_by(name: name)
wr.json = @json = generate_json # we need @json to bind to class
wr.save
end
alias_method :update_whois_record, :generate_data
def generate_json
h = HashWithIndifferentAccess.new
h[:name] = self.name
h[:status] = ['Reserved']
h
end
def remove_data
UpdateWhoisRecordJob.enqueue name, 'reserved'
end
end