Allow blocking TLDs, and fix TLD blocks not being editable (#12805)

Fixes #12795

It was already possible to create domain blocks for TLDs, but those
weren't enforced, nor editable. This commit changes it so that they
are enforced and editable.
th-downstream
ThibG 5 years ago committed by Eugen Rochko
parent b5426b4e9a
commit f52ef9b007

@ -54,7 +54,7 @@ class DomainBlock < ApplicationRecord
segments = uri.normalized_host.split('.') segments = uri.normalized_host.split('.')
variants = segments.map.with_index { |_, i| segments[i..-1].join('.') } variants = segments.map.with_index { |_, i| segments[i..-1].join('.') }
where(domain: variants[0..-2]).order(Arel.sql('char_length(domain) desc')).first where(domain: variants).order(Arel.sql('char_length(domain) desc')).first
end end
end end

@ -52,6 +52,16 @@ RSpec.describe DomainBlock, type: :model do
block = Fabricate(:domain_block, domain: 'sub.example.com') block = Fabricate(:domain_block, domain: 'sub.example.com')
expect(DomainBlock.rule_for('sub.example.com')).to eq block expect(DomainBlock.rule_for('sub.example.com')).to eq block
end end
it 'returns a rule matching a blocked TLD' do
block = Fabricate(:domain_block, domain: 'google')
expect(DomainBlock.rule_for('google')).to eq block
end
it 'returns a rule matching a subdomain of a blocked TLD' do
block = Fabricate(:domain_block, domain: 'google')
expect(DomainBlock.rule_for('maps.google')).to eq block
end
end end
describe '#stricter_than?' do describe '#stricter_than?' do

Loading…
Cancel
Save