forked from fedi/mastodon
Enforce username format for remote users, too (#8102)
Initially I thought there might be valid reasons for remote users to have a different, unpredicted username format. However, I now realize such a difference would be unusable and unexpected within Mastodon. Fix #8058
This commit is contained in:
parent
d425d30804
commit
e7e577dd6e
|
@ -68,6 +68,7 @@ class Account < ApplicationRecord
|
||||||
|
|
||||||
# Remote user validations
|
# Remote user validations
|
||||||
validates :username, uniqueness: { scope: :domain, case_sensitive: true }, if: -> { !local? && will_save_change_to_username? }
|
validates :username, uniqueness: { scope: :domain, case_sensitive: true }, if: -> { !local? && will_save_change_to_username? }
|
||||||
|
validates :username, format: { with: /\A#{USERNAME_RE}\z/i }, if: -> { !local? && will_save_change_to_username? }
|
||||||
|
|
||||||
# Local user validations
|
# Local user validations
|
||||||
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? }
|
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? }
|
||||||
|
|
|
@ -618,10 +618,10 @@ RSpec.describe Account, type: :model do
|
||||||
expect(account).not_to model_have_error_on_field(:username)
|
expect(account).not_to model_have_error_on_field(:username)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'is valid even if the username doesn\'t only contains letters, numbers and underscores' do
|
it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do
|
||||||
account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
|
account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
|
||||||
account.valid?
|
account.valid?
|
||||||
expect(account).not_to model_have_error_on_field(:username)
|
expect(account).to model_have_error_on_field(:username)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'is valid even if the username is longer then 30 characters' do
|
it 'is valid even if the username is longer then 30 characters' do
|
||||||
|
|
Loading…
Reference in a new issue