diff --git a/internal/proxy/util.go b/internal/proxy/util.go index 3f260f87f4..ec63228a93 100644 --- a/internal/proxy/util.go +++ b/internal/proxy/util.go @@ -1168,8 +1168,8 @@ func ValidateUsername(username string) error { usernameSize := len(username) for i := 1; i < usernameSize; i++ { c := username[i] - if c != '_' && !isAlpha(c) && !isNumber(c) { - return merr.WrapErrParameterInvalidMsg("invalid user name %s, username must contain only numbers, letters and underscores, but got %s", username, c) + if c != '_' && c != '-' && c != '.' && !isAlpha(c) && !isNumber(c) { + return merr.WrapErrParameterInvalidMsg("invalid user name %s, username must contain only numbers, letters, underscores, dots, and hyphens, but got %s", username, c) } } return nil diff --git a/internal/proxy/util_test.go b/internal/proxy/util_test.go index 3ca0c1c654..d7921a7aab 100644 --- a/internal/proxy/util_test.go +++ b/internal/proxy/util_test.go @@ -791,11 +791,11 @@ func TestValidateUsername(t *testing.T) { // length gt 32 res = ValidateUsername("aaaaaaaaaabbbbbbbbbbccccccccccddddd") assert.Error(t, res) - // illegal character which not alphabet, _, or number - res = ValidateUsername("a1^7*).,") + // illegal character which not alphabet, _, ., ., or number + res = ValidateUsername("a1^7*),") assert.Error(t, res) - // normal username that only contains alphabet, _, and number - res = ValidateUsername("a17_good") + // normal username that only contains alphabet, _, ., -, and number + res = ValidateUsername("a.17_good-") assert.Nil(t, res) }