Commit 672704f6 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Add relative url support to routing contrainers

Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent 1a7ba2a5
class NamespaceUrlConstrainer class NamespaceUrlConstrainer
def matches?(request) 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 if id =~ Gitlab::Regex.namespace_regex
find_resource(id) find_resource(id)
...@@ -10,4 +13,12 @@ class NamespaceUrlConstrainer ...@@ -10,4 +13,12 @@ class NamespaceUrlConstrainer
def find_resource(id) def find_resource(id)
Namespace.find_by_path(id) Namespace.find_by_path(id)
end end
private
def relative_url_root
if defined?(Gitlab::Application.config.relative_url_root)
Gitlab::Application.config.relative_url_root
end
end
end end
...@@ -17,6 +17,16 @@ describe NamespaceUrlConstrainer, lib: true do ...@@ -17,6 +17,16 @@ describe NamespaceUrlConstrainer, lib: true do
it { expect(subject.matches?(request '/g/gitlab')).to be_falsey } it { expect(subject.matches?(request '/g/gitlab')).to be_falsey }
it { expect(subject.matches?(request '/.gitlab')).to be_falsey } it { expect(subject.matches?(request '/.gitlab')).to be_falsey }
end 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 end
def request(path) def request(path)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment