diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2021-10-25 13:01:16 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-25 13:01:16 +0800 |
commit | 7c951fdd4a9dc15313522ac27aacd687687ddafc (patch) | |
tree | 6866a5b49517903bbff56759d17784d4d6bd246d | |
parent | 3676fafdacaef7ef0a6b72be99a342f91c8d5e5d (diff) | |
download | gitea-7c951fdd4a9dc15313522ac27aacd687687ddafc.tar.gz gitea-7c951fdd4a9dc15313522ac27aacd687687ddafc.zip |
In many cases user avatar link should be an absolute URL with http host (#17420)
-rw-r--r-- | integrations/user_avatar_test.go | 2 | ||||
-rw-r--r-- | models/user_avatar.go | 9 | ||||
-rw-r--r-- | modules/convert/user_test.go | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/integrations/user_avatar_test.go b/integrations/user_avatar_test.go index 6de2914f7f..f07b7c7fcf 100644 --- a/integrations/user_avatar_test.go +++ b/integrations/user_avatar_test.go @@ -73,7 +73,7 @@ func TestUserAvatar(t *testing.T) { user2 = db.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User) // owner of the repo3, is an org - req = NewRequest(t, "GET", user2.AvatarLink()) + req = NewRequest(t, "GET", user2.AvatarLinkWithSize(0)) _ = session.MakeRequest(t, req, http.StatusOK) // Can't test if the response matches because the image is re-generated on upload but checking that this at least doesn't give a 404 should be enough. diff --git a/models/user_avatar.go b/models/user_avatar.go index b8296568c2..f96f66f930 100644 --- a/models/user_avatar.go +++ b/models/user_avatar.go @@ -9,6 +9,7 @@ import ( "fmt" "image/png" "io" + "strings" "code.gitea.io/gitea/models/avatars" "code.gitea.io/gitea/models/db" @@ -91,9 +92,13 @@ func (u *User) AvatarLinkWithSize(size int) string { return avatars.GenerateEmailAvatarFastLink(u.AvatarEmail, size) } -// AvatarLink returns a avatar link with default size +// AvatarLink returns the full avatar link with http host func (u *User) AvatarLink() string { - return u.AvatarLinkWithSize(0) + link := u.AvatarLinkWithSize(0) + if !strings.HasPrefix(link, "//") && !strings.Contains(link, "://") { + return setting.AppURL + strings.TrimPrefix(link, setting.AppSubURL+"/") + } + return link } // UploadAvatar saves custom avatar for user. diff --git a/modules/convert/user_test.go b/modules/convert/user_test.go index 404adc2029..acf918dd99 100644 --- a/modules/convert/user_test.go +++ b/modules/convert/user_test.go @@ -21,6 +21,7 @@ func TestUser_ToUser(t *testing.T) { apiUser := toUser(user1, true, true) assert.True(t, apiUser.IsAdmin) + assert.Contains(t, apiUser.AvatarURL, "://") user2 := db.AssertExistsAndLoadBean(t, &models.User{ID: 2, IsAdmin: false}).(*models.User) |