Allow hyphens in the middle of remote user names (#9345)
Fixes #9309 This only allows hyphens in the middle of a username, much like dots, although I don't have a compelling reason to do so other than keeping the changes minimal.
This commit is contained in:
		
							parent
							
								
									d5fac45f5b
								
							
						
					
					
						commit
						395615d9f3
					
				
					 2 changed files with 8 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -46,7 +46,7 @@
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
class Account < ApplicationRecord
 | 
			
		||||
  USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.]+[a-z0-9_]+)?/i
 | 
			
		||||
  USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i
 | 
			
		||||
  MENTION_RE  = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i
 | 
			
		||||
 | 
			
		||||
  include AccountAvatar
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -618,9 +618,15 @@ RSpec.describe Account, type: :model do
 | 
			
		|||
        expect(account).not_to model_have_error_on_field(:username)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do
 | 
			
		||||
      it 'is valid even if the username contains hyphens' do
 | 
			
		||||
        account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
 | 
			
		||||
        account.valid?
 | 
			
		||||
        expect(account).to_not model_have_error_on_field(:username)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      it 'is invalid if the username doesn\'t only contains letters, numbers, underscores and hyphens' do
 | 
			
		||||
        account = Fabricate.build(:account, domain: 'domain', username: 'the doctor')
 | 
			
		||||
        account.valid?
 | 
			
		||||
        expect(account).to model_have_error_on_field(:username)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue