users: add user name blacklist.

This commit is contained in:
evazion
2020-04-06 14:12:57 -05:00
parent 1e0f6f730a
commit 6d615001e4
3 changed files with 13 additions and 0 deletions

View File

@@ -6,5 +6,6 @@ class UserNameValidator < ActiveModel::EachValidator
rec.errors[attr] << "must be 2 to 100 characters long" if !name.length.between?(2, 100)
rec.errors[attr] << "cannot have whitespace or colons" if name =~ /[[:space:]]|:/
rec.errors[attr] << "cannot begin or end with an underscore" if name =~ /\A_|_\z/
rec.errors[attr] << "is not allowed" if name =~ Regexp.union(Danbooru.config.user_name_blacklist)
end
end

View File

@@ -69,6 +69,11 @@ module Danbooru
true
end
# An array of regexes containing disallowed usernames.
def user_name_blacklist
[]
end
# Thumbnail size
def small_image_width
150

View File

@@ -91,6 +91,13 @@ class UserTest < ActiveSupport::TestCase
assert_equal(["Name cannot begin or end with an underscore"], user.errors.full_messages)
end
should "not allow blacklisted names" do
Danbooru.config.stubs(:user_name_blacklist).returns(["voldemort"])
user = build(:user, name: "voldemort42")
user.save
assert_equal(["Name is not allowed"], user.errors.full_messages)
end
should "be updated" do
@user = FactoryBot.create(:user)
@user.update_attribute(:name, "danzig")