diff options
author | Matthew Strapp <matt@mattstrapp.net> | 2024-01-25 14:17:20 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-25 21:17:20 +0100 |
commit | a4817f31c066fe82550f285d8662befac2468030 (patch) | |
tree | 537fa95ca07bc3dd9d4e390942980ab85d65d3f0 | |
parent | 00217a69d12aa65865966601504060f3b422dc93 (diff) |
Allow + in MIDs as per MSC4009 (#3313)
This PR adds `+` to the username regex, per MSC4009.
### Pull Request Checklist
<!-- Please read
https://matrix-org.github.io/dendrite/development/contributing before
submitting your pull request -->
* [x] I have added Go unit tests or [Complement integration
tests](https://github.com/matrix-org/complement) for this PR _or_ I have
justified why this PR doesn't need tests
* [x] Pull request includes a [sign off below using a legally
identifiable
name](https://matrix-org.github.io/dendrite/development/contributing#sign-off)
_or_ I have already signed off privately
Signed-off-by: `Matt Strapp <matt@mattstrapp.net>`
-rw-r--r-- | internal/validate.go | 4 | ||||
-rw-r--r-- | internal/validate_test.go | 15 |
2 files changed, 17 insertions, 2 deletions
diff --git a/internal/validate.go b/internal/validate.go index da8b35cd..c831565f 100644 --- a/internal/validate.go +++ b/internal/validate.go @@ -38,9 +38,9 @@ var ( ErrPasswordTooLong = fmt.Errorf("password too long: max %d characters", maxPasswordLength) ErrPasswordWeak = fmt.Errorf("password too weak: min %d characters", minPasswordLength) ErrUsernameTooLong = fmt.Errorf("username exceeds the maximum length of %d characters", maxUsernameLength) - ErrUsernameInvalid = errors.New("username can only contain characters a-z, 0-9, or '_-./='") + ErrUsernameInvalid = errors.New("username can only contain characters a-z, 0-9, or '_+-./='") ErrUsernameUnderscore = errors.New("username cannot start with a '_'") - validUsernameRegex = regexp.MustCompile(`^[0-9a-z_\-=./]+$`) + validUsernameRegex = regexp.MustCompile(`^[0-9a-z_\-+=./]+$`) ) // ValidatePassword returns an error if the password is invalid diff --git a/internal/validate_test.go b/internal/validate_test.go index cd262613..1019102d 100644 --- a/internal/validate_test.go +++ b/internal/validate_test.go @@ -130,6 +130,11 @@ func Test_validateUsername(t *testing.T) { domain: "localhost", }, { + name: "special characters are allowed 3", + localpart: "+55555555555", + domain: "localhost", + }, + { name: "not all special characters are allowed", localpart: "notallowed#", // contains # domain: "localhost", @@ -140,6 +145,16 @@ func Test_validateUsername(t *testing.T) { }, }, { + name: "not all special characters are allowed 2", + localpart: "<notallowed", // contains < + domain: "localhost", + wantErr: ErrUsernameInvalid, + wantJSON: &util.JSONResponse{ + Code: http.StatusBadRequest, + JSON: spec.InvalidUsername(ErrUsernameInvalid.Error()), + }, + }, + { name: "username containing numbers", localpart: "hello1337", domain: "localhost", |