From 08d98456352b7311846421364ee97ae428d4ca4d Mon Sep 17 00:00:00 2001 From: TheFox0x7 Date: Mon, 16 Feb 2026 02:42:22 +0100 Subject: [PATCH] use proper subaddress (#36639) --- models/user/user.go | 8 +++++--- models/user/user_test.go | 6 +++--- tests/integration/editor_test.go | 2 +- tests/integration/repofiles_change_test.go | 12 ++++++------ 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/models/user/user.go b/models/user/user.go index 38042631dea..efed73e99d7 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -213,7 +213,7 @@ func (u *User) SetLastLogin() { // GetPlaceholderEmail returns an noreply email func (u *User) GetPlaceholderEmail() string { - return fmt.Sprintf("%s+%d@%s", u.LowerName, u.ID, setting.Service.NoReplyAddress) + return fmt.Sprintf("%d+%s@%s", u.ID, u.LowerName, setting.Service.NoReplyAddress) } // GetEmail returns a noreply email, if the user has set to keep his @@ -1279,13 +1279,15 @@ func GetUsersByEmails(ctx context.Context, emails []string) (*EmailUserMap, erro return &EmailUserMap{results}, nil } -// parseLocalPartToNameID attempts to unparse local-part of email that's in format user+id +// parseLocalPartToNameID attempts to unparse local-part of email that's in format id+user // returns user and id if possible func parseLocalPartToNameID(localPart string) (string, int64) { var id int64 - name, idstr, hasPlus := strings.Cut(localPart, "+") + idstr, name, hasPlus := strings.Cut(localPart, "+") if hasPlus { id, _ = strconv.ParseInt(idstr, 10, 64) + } else { + name = idstr } return name, id } diff --git a/models/user/user_test.go b/models/user/user_test.go index 378acc41805..956eaeafb4f 100644 --- a/models/user/user_test.go +++ b/models/user/user_test.go @@ -66,9 +66,9 @@ func TestUserEmails(t *testing.T) { {"UseR1@example.com", 1}, {"user1-2@example.COM", 1}, {"USER2@" + setting.Service.NoReplyAddress, 2}, - {"user2+2@" + setting.Service.NoReplyAddress, 2}, - {"oldUser2UsernameWhichDoesNotMatterForQuery+2@" + setting.Service.NoReplyAddress, 2}, - {"badUser+99999@" + setting.Service.NoReplyAddress, 0}, + {"2+user2@" + setting.Service.NoReplyAddress, 2}, + {"2+oldUser2UsernameWhichDoesNotMatterForQuery@" + setting.Service.NoReplyAddress, 2}, + {"99999+badUser@" + setting.Service.NoReplyAddress, 0}, {"user4@example.com", 4}, {"no-such", 0}, } diff --git a/tests/integration/editor_test.go b/tests/integration/editor_test.go index 8368c91258e..ac106bc776e 100644 --- a/tests/integration/editor_test.go +++ b/tests/integration/editor_test.go @@ -258,7 +258,7 @@ func testEditorWebGitCommitEmail(t *testing.T) { t.Run("DefaultEmailKeepPrivate", func(t *testing.T) { defer tests.PrintCurrentTest(t)() paramsForKeepPrivate["commit_email"] = "" - resp1 = makeReq(t, linkForKeepPrivate, paramsForKeepPrivate, "User Two", "user2+2@noreply.example.org") + resp1 = makeReq(t, linkForKeepPrivate, paramsForKeepPrivate, "User Two", "2+user2@noreply.example.org") }) t.Run("ChooseEmail", func(t *testing.T) { defer tests.PrintCurrentTest(t)() diff --git a/tests/integration/repofiles_change_test.go b/tests/integration/repofiles_change_test.go index 390ec2ebeb2..5de973aaccb 100644 --- a/tests/integration/repofiles_change_test.go +++ b/tests/integration/repofiles_change_test.go @@ -132,14 +132,14 @@ func getExpectedFileResponseForRepoFilesCreate(commitID string, lastCommit *git. Author: &api.CommitUser{ Identity: api.Identity{ Name: "User Two", - Email: "user2+2@noreply.example.org", + Email: "2+user2@noreply.example.org", }, Date: time.Now().UTC().Format(time.RFC3339), }, Committer: &api.CommitUser{ Identity: api.Identity{ Name: "User Two", - Email: "user2+2@noreply.example.org", + Email: "2+user2@noreply.example.org", }, Date: time.Now().UTC().Format(time.RFC3339), }, @@ -202,14 +202,14 @@ func getExpectedFileResponseForRepoFilesUpdate(commitID, filename, lastCommitSHA Author: &api.CommitUser{ Identity: api.Identity{ Name: "User Two", - Email: "user2+2@noreply.example.org", + Email: "2+user2@noreply.example.org", }, Date: time.Now().UTC().Format(time.RFC3339), }, Committer: &api.CommitUser{ Identity: api.Identity{ Name: "User Two", - Email: "user2+2@noreply.example.org", + Email: "2+user2@noreply.example.org", }, Date: time.Now().UTC().Format(time.RFC3339), }, @@ -312,13 +312,13 @@ func getExpectedFileResponseForRepoFilesUpdateRename(commitID, lastCommitSHA str Author: &api.CommitUser{ Identity: api.Identity{ Name: "User Two", - Email: "user2+2@noreply.example.org", + Email: "2+user2@noreply.example.org", }, }, Committer: &api.CommitUser{ Identity: api.Identity{ Name: "User Two", - Email: "user2+2@noreply.example.org", + Email: "2+user2@noreply.example.org", }, }, Parents: []*api.CommitMeta{