mirror of
https://github.com/mastodon/mastodon.git
synced 2025-09-08 10:50:58 +00:00
Extract downgrade check to before action
This commit is contained in:
parent
db2930a46f
commit
36f6fb98c3
|
@ -4,7 +4,10 @@ module Admin
|
||||||
class DomainBlocksController < BaseController
|
class DomainBlocksController < BaseController
|
||||||
before_action :set_domain_block, only: [:destroy, :edit, :update]
|
before_action :set_domain_block, only: [:destroy, :edit, :update]
|
||||||
before_action :authorize_domain_block_create, only: [:batch, :new, :create]
|
before_action :authorize_domain_block_create, only: [:batch, :new, :create]
|
||||||
before_action :populate_domain_block_from_params, only: :create
|
with_options only: :create do
|
||||||
|
before_action :populate_domain_block_from_params
|
||||||
|
before_action :prevent_downgrade
|
||||||
|
end
|
||||||
|
|
||||||
PERMITTED_PARAMS = %i(
|
PERMITTED_PARAMS = %i(
|
||||||
domain
|
domain
|
||||||
|
@ -40,14 +43,6 @@ module Admin
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
# Disallow accidentally downgrading a domain block
|
|
||||||
if existing_domain_block.present? && !@domain_block.stricter_than?(existing_domain_block)
|
|
||||||
@domain_block.validate
|
|
||||||
flash.now[:alert] = I18n.t('admin.domain_blocks.existing_domain_block_html', name: existing_domain_block.domain, unblock_url: admin_domain_block_path(existing_domain_block)).html_safe
|
|
||||||
@domain_block.errors.delete(:domain)
|
|
||||||
return render :new
|
|
||||||
end
|
|
||||||
|
|
||||||
# Allow transparently upgrading a domain block
|
# Allow transparently upgrading a domain block
|
||||||
if existing_domain_block.present? && existing_domain_block.domain == TagManager.instance.normalize_domain(@domain_block.domain.strip)
|
if existing_domain_block.present? && existing_domain_block.domain == TagManager.instance.normalize_domain(@domain_block.domain.strip)
|
||||||
@domain_block = existing_domain_block
|
@domain_block = existing_domain_block
|
||||||
|
@ -100,6 +95,16 @@ module Admin
|
||||||
@domain_block = DomainBlock.new(resource_params)
|
@domain_block = DomainBlock.new(resource_params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def prevent_downgrade
|
||||||
|
# Disallow accidental downgrade of an existing domain block record
|
||||||
|
if existing_domain_block.present? && !@domain_block.stricter_than?(existing_domain_block)
|
||||||
|
@domain_block.validate
|
||||||
|
flash.now[:alert] = I18n.t('admin.domain_blocks.existing_domain_block_html', name: existing_domain_block.domain, unblock_url: admin_domain_block_path(existing_domain_block)).html_safe
|
||||||
|
@domain_block.errors.delete(:domain)
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def existing_domain_block
|
def existing_domain_block
|
||||||
@existing_domain_block ||= DomainBlock.rule_for(resource_params[:domain]) if resource_params[:domain].present?
|
@existing_domain_block ||= DomainBlock.rule_for(resource_params[:domain]) if resource_params[:domain].present?
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user