forked from treehouse/mastodon
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.rebase/4.0.0rc2
parent
345dd93310
commit
51eb111503
|
@ -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…
Reference in New Issue