diff --git a/src/github.com/matrix-org/dendrite/clientapi/routing/register.go b/src/github.com/matrix-org/dendrite/clientapi/routing/register.go index 958f1c2bd..6ef4ab05c 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/routing/register.go +++ b/src/github.com/matrix-org/dendrite/clientapi/routing/register.go @@ -49,7 +49,7 @@ const ( var ( // TODO: Remove old sessions. Need to do so on a session-specific timeout. sessions = make(map[string][]authtypes.LoginType) // Sessions and completed flow stages - validUsernameRegex = regexp.MustCompile(`^[0-9a-zA-Z_\-./]+$`) + validUsernameRegex = regexp.MustCompile(`^[0-9a-z_\-./]+$`) ) // registerRequest represents the submitted registration request. @@ -183,6 +183,9 @@ func Register( } } + // Squash username to all lowercase letters + r.Username = strings.ToLower(r.Username) + if resErr = validateUserName(r.Username); resErr != nil { return *resErr } @@ -328,6 +331,10 @@ func parseAndValidateLegacyLogin(req *http.Request, r *legacyRegisterRequest) *u if resErr != nil { return resErr } + + // Squash username to all lowercase letters + r.Username = strings.ToLower(r.Username) + if resErr = validateUserName(r.Username); resErr != nil { return resErr } @@ -498,6 +505,9 @@ func RegisterAvailable( ) util.JSONResponse { username := req.URL.Query().Get("username") + // Squash username to all lowercase letters + username = strings.ToLower(username) + if err := validateUserName(username); err != nil { return *err }