Minor style adjustments

This commit is contained in:
Bob Van Landuyt 2017-04-24 12:38:09 +02:00
parent ea8e86dac8
commit 12735eefcd
4 changed files with 45 additions and 28 deletions

View file

@ -16,20 +16,33 @@ class DynamicPathValidator < ActiveModel::EachValidator
# the path `api` shouldn't be allowed because it would be masked by `api/*`
#
TOP_LEVEL_ROUTES = Set.new(%w[
-
.well-known
abuse_reports
admin
all
api
assets
autocomplete
ci
dashboard
explore
files
groups
health_check
help
hooks
import
invites
issues
jwt
koding
member
merge_requests
new
notes
notification_settings
oauth
profile
projects
public
@ -37,29 +50,14 @@ class DynamicPathValidator < ActiveModel::EachValidator
robots.txt
s
search
sent_notifications
services
snippets
teams
u
unsubscribes
users
api
autocomplete
search
member
explore
uploads
import
notification_settings
abuse_reports
invites
help
koding
health_check
jwt
oauth
sent_notifications
-
users
]).freeze
# All project routes with wildcard argument must be listed here.
@ -71,10 +69,30 @@ class DynamicPathValidator < ActiveModel::EachValidator
# without tree as reserved name routing can match 'group/project' as group name,
# 'tree' as project name and 'deploy_keys' as route.
#
WILDCARD_ROUTES = Set.new(%w[tree commits wikis new edit create update logs_tree
preview blob blame raw files create_dir find_file
artifacts graphs refs badges info/lfs/objects
gitlab-lfs/objects environments/folders])
WILDCARD_ROUTES = Set.new(%w[
artifacts
badges
blame
blob
commits
create
create_dir
edit
environments/folders
files
find_file
gitlab-lfs/objects
graphs
info/lfs/objects
logs_tree
new
preview
raw
refs
tree
update
wikis
]).freeze
STRICT_RESERVED = (TOP_LEVEL_ROUTES | WILDCARD_ROUTES).freeze

View file

@ -4,9 +4,7 @@ class ProjectUrlConstrainer
project_path = request.params[:project_id] || request.params[:id]
full_path = namespace_path + '/' + project_path
unless DynamicPathValidator.valid?(full_path)
return false
end
return false unless DynamicPathValidator.valid?(full_path)
Project.find_by_full_path(full_path).present?
end

View file

@ -11,13 +11,14 @@ module Gitlab
end
def namespaces_for_paths(type:)
namespaces = if type == :wildcard
namespaces = case type
when :wildcard
MigrationClasses::Namespace.where.not(parent_id: nil)
elsif type == :top_level
when :top_level
MigrationClasses::Namespace.where(parent_id: nil)
end
with_paths = MigrationClasses::Route.arel_table[:path].
matches_any(path_patterns)
matches_any(path_patterns)
namespaces.joins(:route).where(with_paths)
end

View file

@ -8,7 +8,7 @@ module Gitlab
# regex itself)
# - Ending in `noteable/issue/<id>/notes` for the `issue_notes` route
# - Ending in `issues/id`/rendered_title` for the `issue_title` route
USED_IN_ROUTES = %w[noteable issue notes issues renderred_title
USED_IN_ROUTES = %w[noteable issue notes issues rendered_title
commit pipelines merge_requests new].freeze
RESERVED_WORDS = DynamicPathValidator::WILDCARD_ROUTES - USED_IN_ROUTES
RESERVED_WORDS_REGEX = Regexp.union(*RESERVED_WORDS)