Add relative url support to routing contrainers
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
1a7ba2a5e8
commit
672704f638
|
@ -1,6 +1,9 @@
|
|||
class NamespaceUrlConstrainer
|
||||
def matches?(request)
|
||||
id = request.path.sub(/\A\/+/, '').split('/').first.sub(/.atom\z/, '')
|
||||
id = request.path
|
||||
id = id.sub(/\A#{relative_url_root}/, '') if relative_url_root
|
||||
id = id.sub(/\A\/+/, '').split('/').first
|
||||
id = id.sub(/.atom\z/, '') if id
|
||||
|
||||
if id =~ Gitlab::Regex.namespace_regex
|
||||
find_resource(id)
|
||||
|
@ -10,4 +13,12 @@ class NamespaceUrlConstrainer
|
|||
def find_resource(id)
|
||||
Namespace.find_by_path(id)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def relative_url_root
|
||||
if defined?(Gitlab::Application.config.relative_url_root)
|
||||
Gitlab::Application.config.relative_url_root
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -17,6 +17,16 @@ describe NamespaceUrlConstrainer, lib: true do
|
|||
it { expect(subject.matches?(request '/g/gitlab')).to be_falsey }
|
||||
it { expect(subject.matches?(request '/.gitlab')).to be_falsey }
|
||||
end
|
||||
|
||||
context 'relative url' do
|
||||
before do
|
||||
allow(Gitlab::Application.config).to receive(:relative_url_root) { '/gitlab' }
|
||||
end
|
||||
|
||||
it { expect(subject.matches?(request '/gitlab/gitlab')).to be_truthy }
|
||||
it { expect(subject.matches?(request '/gitlab/gitlab-ce')).to be_falsey }
|
||||
it { expect(subject.matches?(request '/gitlab/')).to be_falsey }
|
||||
end
|
||||
end
|
||||
|
||||
def request(path)
|
||||
|
|
Loading…
Reference in New Issue