Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-10-27 12:29:51 +0300
committerBob Van Landuyt <bob@vanlanduyt.co>2017-11-07 21:52:09 +0300
commit58d1d6a5c7e0a45c9aa8a9d4d1be24dbdce5a08a (patch)
tree4f78e39630276f4dc734964f44dc1d7869282955 /lib
parent5dde0536c323d14fef2327a8d553b5f8a8a7b2d0 (diff)
Free up some group reserved words
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/path_regex.rb5
-rw-r--r--lib/gitlab/routing.rb10
2 files changed, 9 insertions, 6 deletions
diff --git a/lib/gitlab/path_regex.rb b/lib/gitlab/path_regex.rb
index 12e54013be1..6b8a4442ebd 100644
--- a/lib/gitlab/path_regex.rb
+++ b/lib/gitlab/path_regex.rb
@@ -112,18 +112,13 @@ module Gitlab
# this would map to the activity-page of its parent.
GROUP_ROUTES = %w[
-
- activity
analytics
audit_events
- edit
hooks
- issues
ldap
ldap_group_links
- merge_requests
notification_setting
pipeline_quota
- projects
].freeze
ILLEGAL_PROJECT_PATH_WORDS = PROJECT_WILDCARD_ROUTES
diff --git a/lib/gitlab/routing.rb b/lib/gitlab/routing.rb
index abfd413b7ea..defb47663cb 100644
--- a/lib/gitlab/routing.rb
+++ b/lib/gitlab/routing.rb
@@ -42,10 +42,18 @@ module Gitlab
end
def self.redirect_legacy_paths(router, *paths)
+ build_redirect_path = lambda do |request, _params, path|
+ # Only replace the last occurence of `path`.
+ path = request.fullpath.sub(%r{/#{path}/*(?!.*#{path})}, "/-/#{path}/")
+ path << request.query_string if request.query_string.present?
+
+ path
+ end
+
paths.each do |path|
router.match "/#{path}(/*rest)",
via: [:get, :post, :patch, :delete],
- to: router.redirect { |_params, request| request.fullpath.gsub(%r{/#{path}/*}, "/-/#{path}/") },
+ to: router.redirect { |params, request| build_redirect_path.call(request, params, path) },
as: "legacy_#{path}_redirect"
end
end