Don't allow username to end in period.
This commit is contained in:
parent
dfe0f9eedf
commit
5f93b0e3da
|
@ -46,6 +46,8 @@ v 7.10.0 (unreleased)
|
|||
- Refactor issue filtering
|
||||
- AJAX selectbox for issue assignee and author filters
|
||||
- Fix issue with missing options in issue filtering dropdown if selected one
|
||||
- Fix "Hello @username." references not working by no longer allowing usernames to end in period.
|
||||
|
||||
|
||||
v 7.9.0
|
||||
- Send EmailsOnPush email when branch or tag is created or deleted.
|
||||
|
|
|
@ -66,7 +66,7 @@ class Namespace < ActiveRecord::Base
|
|||
path.gsub!(/@.*\z/, "")
|
||||
path.gsub!(/\.git\z/, "")
|
||||
path.gsub!(/\A-/, "")
|
||||
path.gsub!(/\z./, "")
|
||||
path.gsub!(/.\z/, "")
|
||||
path.gsub!(/[^a-zA-Z0-9_\-\.]/, "")
|
||||
|
||||
counter = 0
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
class RemovePeriodsAtEndsOfUsernames < ActiveRecord::Migration
|
||||
class Namespace < ActiveRecord::Base
|
||||
class << self
|
||||
def by_path(path)
|
||||
where('lower(path) = :value', value: path.downcase).first
|
||||
end
|
||||
|
||||
def clean_path(path)
|
||||
path.gsub!(/@.*\z/, "")
|
||||
path.gsub!(/\.git\z/, "")
|
||||
path.gsub!(/\A-/, "")
|
||||
path.gsub!(/.\z/, "")
|
||||
path.gsub!(/[^a-zA-Z0-9_\-\.]/, "")
|
||||
|
||||
counter = 0
|
||||
base = path
|
||||
while Namespace.by_path(path).present?
|
||||
counter += 1
|
||||
path = "#{base}#{counter}"
|
||||
end
|
||||
|
||||
path
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def up
|
||||
select_all("SELECT id, username FROM users WHERE username LIKE '%.'").each do |user|
|
||||
username = quote_string(Namespace.clean_path(user["username"]))
|
||||
execute "UPDATE users SET username = '#{username}' WHERE id = #{user["id"]}"
|
||||
execute "UPDATE namespaces SET path = '#{username}', name = '#{username}' WHERE type = NULL AND owner_id = #{user["id"]}"
|
||||
end
|
||||
|
||||
select_all("SELECT id, path FROM namespaces WHERE type = 'Group' AND path LIKE '%.'").each do |group|
|
||||
path = quote_string(Namespace.clean_path(group["path"]))
|
||||
execute "UPDATE namespaces SET path = '#{path}' WHERE id = #{group["id"]}"
|
||||
end
|
||||
end
|
||||
end
|
|
@ -152,7 +152,7 @@ module Gitlab
|
|||
text
|
||||
end
|
||||
|
||||
NAME_STR = '[a-zA-Z0-9_][a-zA-Z0-9_\-\.]*'
|
||||
NAME_STR = Gitlab::Regex::NAMESPACE_REGEX_STR
|
||||
PROJ_STR = "(?<project>#{NAME_STR}/#{NAME_STR})"
|
||||
|
||||
REFERENCE_PATTERN = %r{
|
||||
|
|
|
@ -2,13 +2,15 @@ module Gitlab
|
|||
module Regex
|
||||
extend self
|
||||
|
||||
NAMESPACE_REGEX_STR = '(?:[a-zA-Z0-9_\.][a-zA-Z0-9_\-\.]*[a-zA-Z0-9_\-]|[a-zA-Z0-9_])'.freeze
|
||||
|
||||
def namespace_regex
|
||||
@namespace_regex ||= /\A[a-zA-Z0-9_.][a-zA-Z0-9_\-\.]*(?<!\.git)\z/.freeze
|
||||
@namespace_regex ||= /\A#{NAMESPACE_REGEX_STR}\z/.freeze
|
||||
end
|
||||
|
||||
def namespace_regex_message
|
||||
"can contain only letters, digits, '_', '-' and '.'. " \
|
||||
"Cannot start with '-' or end in '.git'" \
|
||||
"Cannot start with '-' or end in '.'." \
|
||||
end
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue