From e4d22ebd8b113eb23964e6344e213dbc5c5ce2ea Mon Sep 17 00:00:00 2001 From: Hunter Kehoe Date: Wed, 3 Apr 2024 21:58:29 -0600 Subject: [PATCH] allow + in usernames --- user/types.go | 2 +- user/types_test.go | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/user/types.go b/user/types.go index 68ee02f3..6f6b1f69 100644 --- a/user/types.go +++ b/user/types.go @@ -241,7 +241,7 @@ const ( ) var ( - allowedUsernameRegex = regexp.MustCompile(`^[-_.@a-zA-Z0-9]+$`) // Does not include Everyone (*) + allowedUsernameRegex = regexp.MustCompile(`^[-_.+@a-zA-Z0-9]+$`) // Does not include Everyone (*) allowedTopicRegex = regexp.MustCompile(`^[-_A-Za-z0-9]{1,64}$`) // No '*' allowedTopicPatternRegex = regexp.MustCompile(`^[-_*A-Za-z0-9]{1,64}$`) // Adds '*' for wildcards! allowedTierRegex = regexp.MustCompile(`^[-_A-Za-z0-9]{1,64}$`) diff --git a/user/types_test.go b/user/types_test.go index 811d33f2..cd61977b 100644 --- a/user/types_test.go +++ b/user/types_test.go @@ -61,3 +61,15 @@ func TestTierContext(t *testing.T) { require.Equal(t, "price_456", context["stripe_yearly_price_id"]) } + +func TestUsernameRegex(t *testing.T) { + username := "phil" + username_email := "phil@ntfy.sh" + username_email_alias := "phil+alias@ntfy.sh" + username_invalid := "phil\rocks" + + require.True(t, AllowedUsername(username)) + require.True(t, AllowedUsername(username_email)) + require.True(t, AllowedUsername(username_email_alias)) + require.False(t, AllowedUsername(username_invalid)) +}