historically, usernames can start with a number. Let them login.

This commit is contained in:
Thibault Duplessis 2017-08-23 12:19:00 -05:00
parent d728e01149
commit 889535574d
2 changed files with 7 additions and 3 deletions

View file

@ -35,7 +35,7 @@ final class DataForm(
Constraints minLength 2,
Constraints maxLength 20,
Constraints.pattern(
regex = User.usernameRegex,
regex = User.newUsernameRegex,
error = "usernameInvalid"
)
).verifying("usernameUnacceptable", u => !LameName.username(u))

View file

@ -140,8 +140,12 @@ object User {
// No: contact@lichess.org, @1, http://example.com/@happy0
val atUsernameRegex = """(?<=\s|^)@(?>([a-zA-Z_-][\w-]{1,19}))(?![\w-])""".r
val usernameRegex = """(?i)[a-z][\w-]*[a-z0-9]""".r
def couldBeUsername(str: String) = usernameRegex.pattern.matcher(str).matches
// what existing usernames are like
val historicalUsernameRegex = """(?i)[\w-]*[a-z0-9]""".r
// what new usernames should be like
val newUsernameRegex = """(?i)[a-z][\w-]*[a-z0-9]""".r
def couldBeUsername(str: String) = historicalUsernameRegex.pattern.matcher(str).matches
def normalize(username: String) = username.toLowerCase