diff options
author | zeripath <art27@cantab.net> | 2021-04-16 23:22:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-17 00:22:25 +0200 |
commit | 324cff68c97d766a04464488a73ccf7ad54931d9 (patch) | |
tree | c3c61ca17ca01d7002702c4765a602e76579c5ff | |
parent | c29620c05ffb5ec7bda7ddde97aa7c893397081f (diff) | |
download | gitea-324cff68c97d766a04464488a73ccf7ad54931d9.tar.gz gitea-324cff68c97d766a04464488a73ccf7ad54931d9.zip |
Send size to /avatars if requested (#15459)
If an avatar is requested in a particular size ensure that /avatars also gets the size request
Fix #15453
Signed-off-by: Andrew Thornton <art27@cantab.net>
-rw-r--r-- | models/avatar.go | 7 | ||||
-rw-r--r-- | models/user_avatar.go | 7 |
2 files changed, 11 insertions, 3 deletions
diff --git a/models/avatar.go b/models/avatar.go index ad1e19d0d7..de416a1dba 100644 --- a/models/avatar.go +++ b/models/avatar.go @@ -81,7 +81,7 @@ func LibravatarURL(email string) (*url.URL, error) { } // HashedAvatarLink returns an avatar link for a provided email -func HashedAvatarLink(email string) string { +func HashedAvatarLink(email string, size int) string { lowerEmail := strings.ToLower(strings.TrimSpace(email)) sum := fmt.Sprintf("%x", md5.Sum([]byte(lowerEmail))) _, _ = cache.GetString("Avatar:"+sum, func() (string, error) { @@ -108,6 +108,9 @@ func HashedAvatarLink(email string) string { } return lowerEmail, nil }) + if size > 0 { + return setting.AppSubURL + "/avatar/" + url.PathEscape(sum) + "?size=" + strconv.Itoa(size) + } return setting.AppSubURL + "/avatar/" + url.PathEscape(sum) } @@ -129,7 +132,7 @@ func SizedAvatarLink(email string, size int) string { // This is the slow path that would need to call LibravatarURL() which // does DNS lookups. Avoid it by issuing a redirect so we don't block // the template render with network requests. - return HashedAvatarLink(email) + return HashedAvatarLink(email, size) } else if !setting.DisableGravatar { // copy GravatarSourceURL, because we will modify its Path. copyOfGravatarSourceURL := *setting.GravatarSourceURL diff --git a/models/user_avatar.go b/models/user_avatar.go index 871e176599..d336684a27 100644 --- a/models/user_avatar.go +++ b/models/user_avatar.go @@ -82,6 +82,9 @@ func (u *User) RealSizedAvatarLink(size int) string { if u.Avatar == "" { return DefaultAvatarLink() } + if size > 0 { + return setting.AppSubURL + "/avatars/" + u.Avatar + "?size=" + strconv.Itoa(size) + } return setting.AppSubURL + "/avatars/" + u.Avatar case setting.DisableGravatar, setting.OfflineMode: if u.Avatar == "" { @@ -89,7 +92,9 @@ func (u *User) RealSizedAvatarLink(size int) string { log.Error("GenerateRandomAvatar: %v", err) } } - + if size > 0 { + return setting.AppSubURL + "/avatars/" + u.Avatar + "?size=" + strconv.Itoa(size) + } return setting.AppSubURL + "/avatars/" + u.Avatar } return SizedAvatarLink(u.AvatarEmail, size) |