diff --git a/app/models/user.rb b/app/models/user.rb index 0edd01a97..19a728bf6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -149,7 +149,7 @@ class User < ActiveRecord::Base def self.username_available?(username) lower = username.downcase - User.where(username_lower: lower).blank? + User.where(username_lower: lower).blank? && !SiteSetting.reserved_usernames.split("|").include?(username) end def effective_locale diff --git a/spec/components/user_name_suggester_spec.rb b/spec/components/user_name_suggester_spec.rb index b16bfee4b..8f63ba1b2 100644 --- a/spec/components/user_name_suggester_spec.rb +++ b/spec/components/user_name_suggester_spec.rb @@ -49,6 +49,12 @@ describe UserNameSuggester do expect(UserNameSuggester.suggest("myreallylongnam")).to eq('myreallylongna1') end + it "doesn't suggest reserved usernames" do + SiteSetting.reserved_usernames = 'admin|steve|steve1' + expect(UserNameSuggester.suggest("admin@hissite.com")).to eq('admin1') + expect(UserNameSuggester.suggest("steve")).to eq('steve2') + end + it "removes leading character if it is not alphanumeric" do expect(UserNameSuggester.suggest("_myname")).to eq('myname') end