FIX: Support multiple embeddable host records with the same host
This commit is contained in:
parent
1935f624b8
commit
e62c0a42fa
|
@ -17,20 +17,19 @@ class EmbeddableHost < ActiveRecord::Base
|
||||||
host = uri.host
|
host = uri.host
|
||||||
return false unless host.present?
|
return false unless host.present?
|
||||||
|
|
||||||
where("lower(host) = ?", host).first
|
path = uri.path
|
||||||
|
path << "?" << uri.query if uri.query.present?
|
||||||
|
|
||||||
|
where("lower(host) = ?", host).each do |eh|
|
||||||
|
return eh if eh.path_whitelist.blank? || !Regexp.new(eh.path_whitelist).match(path).nil?
|
||||||
|
end
|
||||||
|
|
||||||
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.url_allowed?(url)
|
def self.url_allowed?(url)
|
||||||
uri = URI(url) rescue nil
|
uri = URI(url) rescue nil
|
||||||
return false unless uri.present?
|
uri.present? && record_for_url(uri).present?
|
||||||
|
|
||||||
path = uri.path
|
|
||||||
path << "?" << uri.query if uri.query.present?
|
|
||||||
|
|
||||||
host = record_for_url(uri)
|
|
||||||
|
|
||||||
return host.present? &&
|
|
||||||
(host.path_whitelist.blank? || !Regexp.new(host.path_whitelist).match(path).nil?)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -77,6 +77,13 @@ describe EmbeddableHost do
|
||||||
expect(EmbeddableHost.url_allowed?('http://eviltrout.com/fp?test=1')).to eq(false)
|
expect(EmbeddableHost.url_allowed?('http://eviltrout.com/fp?test=1')).to eq(false)
|
||||||
expect(EmbeddableHost.url_allowed?('http://eviltrout.com/fp')).to eq(true)
|
expect(EmbeddableHost.url_allowed?('http://eviltrout.com/fp')).to eq(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "allows multiple records with different paths" do
|
||||||
|
Fabricate(:embeddable_host, path_whitelist: '/rick/.*')
|
||||||
|
Fabricate(:embeddable_host, path_whitelist: '/morty/.*')
|
||||||
|
expect(EmbeddableHost.url_allowed?('http://eviltrout.com/rick/smith')).to eq(true)
|
||||||
|
expect(EmbeddableHost.url_allowed?('http://eviltrout.com/morty/sanchez')).to eq(true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue