Skip to content

Commit 1fed0e1

Browse files
GiteaBotwxiaoguang
andauthored
Fix profile page email display, respect settings (#23747) (#23756)
Backport #23747 by @wxiaoguang Always respect the `setting.UI.ShowUserEmail` and `KeepEmailPrivate` setting. * It doesn't make sense to show user's own E-mail to themself. * Always hide the E-mail if KeepEmailPrivate=true, then the user could know how their profile page looks like for others. * Revert the `setting.UI.ShowUserEmail` change from #4981 . This setting is used to control the E-mail display, not only for the user list page. ps: the incorrect `<div .../>` tag on the profile page has been fixed by #23748 together, so this PR becomes simpler. Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
1 parent 88a652f commit 1fed0e1

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

routers/web/user/profile.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ func Profile(ctx *context.Context) {
292292
ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled
293293
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
294294

295-
ctx.Data["ShowUserEmail"] = len(ctx.ContextUser.Email) > 0 && ctx.IsSigned && (!ctx.ContextUser.KeepEmailPrivate || ctx.ContextUser.ID == ctx.Doer.ID)
295+
ctx.Data["ShowUserEmail"] = setting.UI.ShowUserEmail && ctx.ContextUser.Email != "" && ctx.IsSigned && !ctx.ContextUser.KeepEmailPrivate
296296

297297
ctx.HTML(http.StatusOK, tplProfile)
298298
}

tests/integration/setting_test.go

+30-19
Original file line numberDiff line numberDiff line change
@@ -45,38 +45,49 @@ func TestSettingShowUserEmailProfile(t *testing.T) {
4545
defer tests.PrepareTestEnv(t)()
4646

4747
showUserEmail := setting.UI.ShowUserEmail
48+
49+
// user1: keep_email_private = false, user2: keep_email_private = true
50+
4851
setting.UI.ShowUserEmail = true
4952

50-
session := loginUser(t, "user2")
51-
req := NewRequest(t, "GET", "/user2")
53+
// user1 can see self
54+
session := loginUser(t, "user1")
55+
req := NewRequest(t, "GET", "/user1")
5256
resp := session.MakeRequest(t, req, http.StatusOK)
5357
htmlDoc := NewHTMLParser(t, resp.Body)
54-
assert.Contains(t,
55-
htmlDoc.doc.Find(".user.profile").Text(),
56-
"user2@example.com",
57-
)
58-
59-
setting.UI.ShowUserEmail = false
58+
assert.Contains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com")
6059

60+
// user1 can not see user2
6161
req = NewRequest(t, "GET", "/user2")
6262
resp = session.MakeRequest(t, req, http.StatusOK)
6363
htmlDoc = NewHTMLParser(t, resp.Body)
64-
// Should contain since this user owns the profile page
65-
assert.Contains(t,
66-
htmlDoc.doc.Find(".user.profile").Text(),
67-
"user2@example.com",
68-
)
64+
// Should not contain even if the user visits their own profile page
65+
assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user2@example.com")
6966

70-
setting.UI.ShowUserEmail = showUserEmail
67+
// user2 can see user1
68+
session = loginUser(t, "user2")
69+
req = NewRequest(t, "GET", "/user1")
70+
resp = session.MakeRequest(t, req, http.StatusOK)
71+
htmlDoc = NewHTMLParser(t, resp.Body)
72+
assert.Contains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com")
7173

72-
session = loginUser(t, "user4")
74+
// user2 can not see self
75+
session = loginUser(t, "user2")
7376
req = NewRequest(t, "GET", "/user2")
7477
resp = session.MakeRequest(t, req, http.StatusOK)
7578
htmlDoc = NewHTMLParser(t, resp.Body)
76-
assert.NotContains(t,
77-
htmlDoc.doc.Find(".user.profile").Text(),
78-
"user2@example.com",
79-
)
79+
assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user2@example.com")
80+
81+
setting.UI.ShowUserEmail = false
82+
83+
// user1 can not see self
84+
session = loginUser(t, "user1")
85+
req = NewRequest(t, "GET", "/user1")
86+
resp = session.MakeRequest(t, req, http.StatusOK)
87+
htmlDoc = NewHTMLParser(t, resp.Body)
88+
assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com")
89+
90+
setting.UI.ShowUserEmail = showUserEmail
8091
}
8192

8293
func TestSettingLandingPage(t *testing.T) {

0 commit comments

Comments
 (0)