Better registration username error messages; close #4077
This commit is contained in:
parent
ef9329027e
commit
56a299d8e1
|
@ -630,8 +630,9 @@ val `boardSize` = new Translated("boardSize", Site)
|
|||
val `pieceSet` = new Translated("pieceSet", Site)
|
||||
val `embedInYourWebsite` = new Translated("embedInYourWebsite", Site)
|
||||
val `usernameAlreadyUsed` = new Translated("usernameAlreadyUsed", Site)
|
||||
val `usernameInvalid` = new Translated("usernameInvalid", Site)
|
||||
val `usernameStartNoNumber` = new Translated("usernameStartNoNumber", Site)
|
||||
val `usernamePrefixInvalid` = new Translated("usernamePrefixInvalid", Site)
|
||||
val `usernameSuffixInvalid` = new Translated("usernameSuffixInvalid", Site)
|
||||
val `usernameCharsInvalid` = new Translated("usernameCharsInvalid", Site)
|
||||
val `usernameUnacceptable` = new Translated("usernameUnacceptable", Site)
|
||||
val `directlySupportLichess` = new Translated("directlySupportLichess", Site)
|
||||
val `playChessInStyle` = new Translated("playChessInStyle", Site)
|
||||
|
|
|
@ -37,8 +37,16 @@ final class DataForm(
|
|||
Constraints minLength 2,
|
||||
Constraints maxLength 20,
|
||||
Constraints.pattern(
|
||||
regex = User.newUsernameRegex,
|
||||
error = "usernameInvalid"
|
||||
regex = User.newUsernamePrefix,
|
||||
error = "usernamePrefixInvalid"
|
||||
),
|
||||
Constraints.pattern(
|
||||
regex = User.newUsernameSuffix,
|
||||
error = "usernameSuffixInvalid"
|
||||
),
|
||||
Constraints.pattern(
|
||||
regex = User.newUsernameChars,
|
||||
error = "usernameCharsInvalid"
|
||||
)
|
||||
).verifying("usernameUnacceptable", u => !LameName.username(u))
|
||||
.verifying("usernameAlreadyUsed", u => !UserRepo.nameExists(u).awaitSeconds(4))
|
||||
|
|
|
@ -148,9 +148,15 @@ object User {
|
|||
|
||||
// what existing usernames are like
|
||||
val historicalUsernameRegex = """(?i)[a-z0-9][\w-]*[a-z0-9]""".r
|
||||
// what new usernames should be like
|
||||
// what new usernames should be like -- now split into further parts for clearer error messages
|
||||
val newUsernameRegex = """(?i)[a-z][\w-]*[a-z0-9]""".r
|
||||
|
||||
val newUsernamePrefix = """(?i)[a-z].*""".r
|
||||
|
||||
val newUsernameSuffix = """(?i).*[a-z0-9]""".r
|
||||
|
||||
val newUsernameChars = """(?i)[\w-]*""".r
|
||||
|
||||
def couldBeUsername(str: User.ID) = historicalUsernameRegex.pattern.matcher(str).matches
|
||||
|
||||
def normalize(username: String) = username.toLowerCase
|
||||
|
|
|
@ -5,7 +5,7 @@ import org.specs2.mutable.Specification
|
|||
class UserTest extends Specification {
|
||||
|
||||
def canSignup(str: User.ID) =
|
||||
User.newUsernameRegex.pattern.matcher(str).matches
|
||||
User.newUsernamePrefix.pattern.matcher(str).matches && User.newUsernameSuffix.pattern.matcher(str).matches && User.newUsernameChars.pattern.matcher(str).matches
|
||||
|
||||
"username regex" in {
|
||||
import User.couldBeUsername
|
||||
|
|
|
@ -752,8 +752,9 @@ in %3$s</string>
|
|||
<string name="pieceSet">Piece set</string>
|
||||
<string name="embedInYourWebsite">Embed in your website</string>
|
||||
<string name="usernameAlreadyUsed">This username is already in use, please try another one.</string>
|
||||
<string name="usernameInvalid">Invalid username. Please use only letters, numbers, underscore and dash.</string>
|
||||
<string name="usernameStartNoNumber">The username must not start with a number.</string>
|
||||
<string name="usernamePrefixInvalid">The username must start with a letter.</string>
|
||||
<string name="usernameSuffixInvalid">The username must end with a letter or a number.</string>
|
||||
<string name="usernameCharsInvalid">The username must only contain letters, numbers, underscores, and hyphens.</string>
|
||||
<string name="usernameUnacceptable">This username is not acceptable.</string>
|
||||
<string name="directlySupportLichess">Directly support Lichess</string>
|
||||
<string name="playChessInStyle">Play chess in style</string>
|
||||
|
|
Loading…
Reference in a new issue