Merge pull request #2164 from internetee/possibility-of-adding-extension-prohibited

Possibility of adding extension prohibited
This commit is contained in:
Timo Võhmar 2021-09-23 16:35:34 +03:00 committed by GitHub
commit a904fda198
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 51 additions and 36 deletions

View file

@ -8,7 +8,9 @@ module Api
before_action :authorized_to_manage_locks?
def create
if @domain.apply_registry_lock
extensions_prohibited = params[:extensionsProhibited]
if @domain.apply_registry_lock(extensions_prohibited: extensions_prohibited.to_s.downcase == 'true')
render json: serialized_domain(@domain)
else
render json: { errors: [{ base: ['Domain cannot be locked'] }] },

View file

@ -11,20 +11,26 @@ module Domain::RegistryLockable
DomainStatus::SERVER_TRANSFER_PROHIBITED].freeze
end
def apply_registry_lock
# binding.pry
EXTENSIONS_STATUS = [DomainStatus::SERVER_EXTENSION_UPDATE_PROHIBITED].freeze
def apply_registry_lock(extensions_prohibited:)
return unless registry_lockable?
return if locked_by_registrant?
transaction do
self.statuses |= LOCK_STATUSES
self.locked_by_registrant_at = Time.zone.now
alert_registrar_lock_changes!(lock: true)
save!
apply_statuses_locked_statuses(extensions_prohibited: extensions_prohibited)
end
end
def apply_statuses_locked_statuses(extensions_prohibited:)
self.statuses |= LOCK_STATUSES
self.statuses |= EXTENSIONS_STATUS if Feature.obj_and_extensions_statuses_enabled? && extensions_prohibited
self.locked_by_registrant_at = Time.zone.now
alert_registrar_lock_changes!(lock: true)
save!
end
def registry_lockable?
(statuses & [DomainStatus::PENDING_DELETE_CONFIRMATION,
DomainStatus::PENDING_CREATE, DomainStatus::PENDING_UPDATE,
@ -42,17 +48,23 @@ module Domain::RegistryLockable
return unless locked_by_registrant?
transaction do
LOCK_STATUSES.each do |domain_status|
statuses.delete([domain_status])
end
self.locked_by_registrant_at = nil
self.statuses = admin_store_statuses_history || []
alert_registrar_lock_changes!(lock: false)
save!
remove_statuses_from_locked_domain
end
end
def remove_statuses_from_locked_domain
LOCK_STATUSES.each do |domain_status|
statuses.delete([domain_status])
end
statuses.delete([EXTENSIONS_STATUS]) if statuses.include? EXTENSIONS_STATUS
self.locked_by_registrant_at = nil
self.statuses = admin_store_statuses_history || []
alert_registrar_lock_changes!(lock: false)
save!
end
def alert_registrar_lock_changes!(lock: true)
translation = lock ? 'locked' : 'unlocked'
registrar.notifications.create!(