From d03be7766523904663a6235cb7deea7201c330f2 Mon Sep 17 00:00:00 2001 From: "Panagiotis \"Ivory\" Vasilopoulos" Date: Sun, 5 May 2024 04:16:13 +0200 Subject: [PATCH] UI: Hide hidden email from own profile, again This is a follow-up for 5e1bd8af5f16f9db88cfeb5b80bdf731435cacfb, which was my first commit to Gitea. It is also a follow up for the Gitea PR #29300 (https://github.com/go-gitea/gitea/pull/23900) created by myself, which turned stale. This change partially restores the behavior of Gitea PR #23747 (https://github.com/go-gitea/gitea/pull/23747) by wxiaoguang, but maintains the lock. The original idea was to differentiate things from GitHub and GitLab a little bit, and show the email address on the profile. The profile is not only a place where the user chooses to show how they present themselves on an instance, it is also a place where they can assess their relationship *with* the instance, as it provides features such as the Public Activity feed that can be only shown to the user, in private. It's, in some way, a dashboard. The email was shown there to remind the user that this is the primary email that will be used by a supposed administrator to contact them. There were other motivations behind that change as well, but, long story short, the idea did not work very well, as some people (e.g. people livestreaming on the Internet, or 'normal' users sharing their screens) do not want to put their email address out there when showing their screen to other people. Other alternatives, such as blurring the text or only showing the real email address, were explored, but were rejected because of browser compatibility and simplicity reasons. The padlock icon that is shown when showing the email address to other people has been kept. One viable alternative could be displaying the placeholder email instead, but that requires some more thought. Fixes https://codeberg.org/forgejo/forgejo/issues/1950. --- options/locale/locale_en-US.ini | 1 - templates/shared/user/profile_big_avatar.tmpl | 29 ++++++------------- tests/integration/setting_test.go | 8 ++--- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 9148d57a27..009be75dd7 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -676,7 +676,6 @@ unblock = Unblock user_bio = Biography disabled_public_activity = This user has disabled the public visibility of the activity. email_visibility.limited = Your email address is visible to all authenticated users -email_visibility.private = Your email address is only visible to you and administrators show_on_map = Show this place on a map settings = User settings diff --git a/templates/shared/user/profile_big_avatar.tmpl b/templates/shared/user/profile_big_avatar.tmpl index 95277e2f78..a173424eb1 100644 --- a/templates/shared/user/profile_big_avatar.tmpl +++ b/templates/shared/user/profile_big_avatar.tmpl @@ -38,29 +38,18 @@ {{end}} {{end}} - {{if (eq .SignedUserID .ContextUser.ID)}} -
  • - {{svg "octicon-mail"}} - {{.ContextUser.Email}} - - {{if .ShowUserEmail}} - - {{svg "octicon-unlock"}} - - {{else}} - - {{svg "octicon-lock"}} - - {{end}} - -
  • - {{else}} - {{if .ShowUserEmail}} + {{if .ShowUserEmail}}
  • {{svg "octicon-mail"}} - {{.ContextUser.Email}} + {{.ContextUser.Email}} + {{if (eq .SignedUserID .ContextUser.ID)}} + + + {{svg "octicon-unlock"}} + + + {{end}}
  • - {{end}} {{end}} {{if .ContextUser.Website}}
  • diff --git a/tests/integration/setting_test.go b/tests/integration/setting_test.go index 283070ec8e..a82a8afef1 100644 --- a/tests/integration/setting_test.go +++ b/tests/integration/setting_test.go @@ -75,21 +75,21 @@ func TestSettingShowUserEmailProfile(t *testing.T) { htmlDoc = NewHTMLParser(t, resp.Body) assert.Contains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com") - // user2 can see own hidden email + // user2 cannot see own hidden email session = loginUser(t, "user2") req = NewRequest(t, "GET", "/user2") resp = session.MakeRequest(t, req, http.StatusOK) htmlDoc = NewHTMLParser(t, resp.Body) - assert.Contains(t, htmlDoc.doc.Find(".user.profile").Text(), "user2@example.com") + assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user2@example.com") setting.UI.ShowUserEmail = false - // user1 can see own (now hidden) email + // user1 cannot see own (now hidden) email session = loginUser(t, "user1") req = NewRequest(t, "GET", "/user1") resp = session.MakeRequest(t, req, http.StatusOK) htmlDoc = NewHTMLParser(t, resp.Body) - assert.Contains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com") + assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com") setting.UI.ShowUserEmail = showUserEmail }