mirror of
https://github.com/internetee/registry.git
synced 2025-05-18 18:29:40 +02:00
111297422-blocked_domains
This commit is contained in:
parent
4095450fb8
commit
11d543d967
5 changed files with 465 additions and 137 deletions
|
@ -2,20 +2,45 @@ class Admin::BlockedDomainsController < AdminController
|
|||
load_and_authorize_resource
|
||||
|
||||
def index
|
||||
bd = BlockedDomain.first_or_initialize
|
||||
@blocked_domains = bd.names.join("\n")
|
||||
bd = BlockedDomain.pluck(:name)
|
||||
if bd
|
||||
@blocked_domains = bd.to_yaml.gsub("---\n", '').gsub("-", '').gsub(/\.\.\..?\n/, '')
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
names = params[:blocked_domains].split("\r\n").map(&:strip)
|
||||
@blocked_domains = params[:blocked_domains]
|
||||
|
||||
bd = BlockedDomain.first_or_create
|
||||
begin
|
||||
params[:blocked_domains] = "---\n" if params[:blocked_domains].blank?
|
||||
names = YAML.load(params[:blocked_domains])
|
||||
fail if names == false
|
||||
rescue
|
||||
flash.now[:alert] = I18n.t('invalid_yaml')
|
||||
logger.warn 'Invalid YAML'
|
||||
render :index and return
|
||||
end
|
||||
|
||||
if bd.update(names: names)
|
||||
result = true
|
||||
BlockedDomain.transaction do
|
||||
# removing old ones
|
||||
existing = BlockedDomain.any_of_domains(names).pluck(:id)
|
||||
BlockedDomain.where.not(id: existing).destroy_all
|
||||
|
||||
#updating and adding
|
||||
names.each do |name|
|
||||
rec = BlockedDomain.find_or_initialize_by(name: name)
|
||||
unless rec.save
|
||||
result = false
|
||||
raise ActiveRecord::Rollback
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if result
|
||||
flash[:notice] = I18n.t('record_updated')
|
||||
redirect_to :back
|
||||
else
|
||||
@blocked_domains = params[:blocked_domains]
|
||||
flash.now[:alert] = I18n.t('failed_to_update_record')
|
||||
render :index
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue