Skip to content

Commit

Permalink
In many cases user avatar link should be an absolute URL with http host
Browse files Browse the repository at this point in the history
  • Loading branch information
wxiaoguang committed Oct 24, 2021
1 parent ff96388 commit d2fbf31
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
2 changes: 1 addition & 1 deletion integrations/user_avatar_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
9 changes: 7 additions & 2 deletions models/user_avatar.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"fmt"
"image/png"
"io"
"strings"

"code.gitea.io/gitea/models/avatars"
"code.gitea.io/gitea/models/db"
Expand Down Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions modules/convert/user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down

0 comments on commit d2fbf31

Please sign in to comment.