diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-10-27 11:29:51 +0200 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-11-07 19:52:09 +0100 |
commit | 58d1d6a5c7e0a45c9aa8a9d4d1be24dbdce5a08a (patch) | |
tree | 4f78e39630276f4dc734964f44dc1d7869282955 /lib | |
parent | 5dde0536c323d14fef2327a8d553b5f8a8a7b2d0 (diff) | |
download | gitlab-ce-58d1d6a5c7e0a45c9aa8a9d4d1be24dbdce5a08a.tar.gz |
Free up some group reserved words
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/path_regex.rb | 5 | ||||
-rw-r--r-- | lib/gitlab/routing.rb | 10 |
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 |