Inline Gitlab::Blacklist in NamespaceValidator

This commit is contained in:
Robert Speicher 2015-12-07 16:29:39 -05:00
parent 175f482c3c
commit 2379c8beea
2 changed files with 32 additions and 38 deletions

View File

@ -2,21 +2,49 @@
#
# Custom validator for GitLab namespace values.
#
# Values are checked for formatting and exclusion from `Gitlab::Blacklist.path`.
# Values are checked for formatting and exclusion from a list of reserved path
# names.
class NamespaceValidator < ActiveModel::EachValidator
RESERVED = %w(
admin
all
assets
ci
dashboard
files
groups
help
hooks
issues
merge_requests
notes
profile
projects
public
repository
s
search
services
snippets
teams
u
unsubscribes
users
).freeze
def validate_each(record, attribute, value)
unless value =~ Gitlab::Regex.namespace_regex
record.errors.add(attribute, Gitlab::Regex.namespace_regex_message)
end
if blacklisted?(value)
if reserved?(value)
record.errors.add(attribute, "#{value} is a reserved name")
end
end
private
def blacklisted?(value)
Gitlab::Blacklist.path.include?(value)
def reserved?(value)
RESERVED.include?(value)
end
end

View File

@ -1,34 +0,0 @@
module Gitlab
module Blacklist
extend self
def path
%w(
admin
dashboard
files
groups
help
profile
projects
search
public
assets
u
s
teams
merge_requests
issues
users
snippets
services
repository
hooks
notes
unsubscribes
all
ci
)
end
end
end