Merge pull request #2730 from internetee/2702-optional-admin-contact-for-private-registrations

Make admin contacts optional for private registrants
This commit is contained in:
Timo Võhmar 2025-01-28 10:15:33 +02:00 committed by GitHub
commit a9b341ebfe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 173 additions and 8 deletions

View file

@ -164,15 +164,35 @@ class Domain < ApplicationRecord
max: -> { Setting.dnskeys_max_count },
}
validates :admin_domain_contacts, object_count: {
min: -> { Setting.admin_contacts_min_count },
max: -> { Setting.admin_contacts_max_count },
}
def self.admin_contacts_validation_rules(for_org:)
{
min: -> { for_org ? Setting.admin_contacts_min_count : 0 },
max: -> { Setting.admin_contacts_max_count }
}
end
validates :tech_domain_contacts, object_count: {
min: -> { Setting.tech_contacts_min_count },
max: -> { Setting.tech_contacts_max_count },
}
def self.tech_contacts_validation_rules(for_org:)
{
min: -> { for_org ? Setting.tech_contacts_min_count : 0 },
max: -> { Setting.tech_contacts_max_count }
}
end
validates :admin_domain_contacts,
object_count: admin_contacts_validation_rules(for_org: true),
if: :require_admin_contacts?
validates :admin_domain_contacts,
object_count: admin_contacts_validation_rules(for_org: false),
unless: :require_admin_contacts?
validates :tech_domain_contacts,
object_count: tech_contacts_validation_rules(for_org: true),
if: :require_tech_contacts?
validates :tech_domain_contacts,
object_count: tech_contacts_validation_rules(for_org: false),
unless: :require_tech_contacts?
validates :nameservers, uniqueness_multi: {
attribute: 'hostname',
@ -835,4 +855,12 @@ class Domain < ApplicationRecord
end
array
end
def require_admin_contacts?
registrant.present? && registrant.org?
end
def require_tech_contacts?
registrant.present? && registrant.org?
end
end

View file

@ -114,7 +114,9 @@ class Epp::Domain < Domain
def attach_default_contacts
return if registrant.blank?
registrant_obj = Contact.find_by(code: registrant.code)
return if registrant_obj.priv?
tech_contacts << registrant_obj if tech_domain_contacts.blank?
admin_contacts << registrant_obj if admin_domain_contacts.blank? && !registrant.org?