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>
This commit is contained in:
zeripath 2021-04-16 23:22:25 +01:00 committed by GitHub
parent c29620c05f
commit 324cff68c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View file

@ -81,7 +81,7 @@ func LibravatarURL(email string) (*url.URL, error) {
} }
// HashedAvatarLink returns an avatar link for a provided email // 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)) lowerEmail := strings.ToLower(strings.TrimSpace(email))
sum := fmt.Sprintf("%x", md5.Sum([]byte(lowerEmail))) sum := fmt.Sprintf("%x", md5.Sum([]byte(lowerEmail)))
_, _ = cache.GetString("Avatar:"+sum, func() (string, error) { _, _ = cache.GetString("Avatar:"+sum, func() (string, error) {
@ -108,6 +108,9 @@ func HashedAvatarLink(email string) string {
} }
return lowerEmail, nil return lowerEmail, nil
}) })
if size > 0 {
return setting.AppSubURL + "/avatar/" + url.PathEscape(sum) + "?size=" + strconv.Itoa(size)
}
return setting.AppSubURL + "/avatar/" + url.PathEscape(sum) 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 // 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 // does DNS lookups. Avoid it by issuing a redirect so we don't block
// the template render with network requests. // the template render with network requests.
return HashedAvatarLink(email) return HashedAvatarLink(email, size)
} else if !setting.DisableGravatar { } else if !setting.DisableGravatar {
// copy GravatarSourceURL, because we will modify its Path. // copy GravatarSourceURL, because we will modify its Path.
copyOfGravatarSourceURL := *setting.GravatarSourceURL copyOfGravatarSourceURL := *setting.GravatarSourceURL

View file

@ -82,6 +82,9 @@ func (u *User) RealSizedAvatarLink(size int) string {
if u.Avatar == "" { if u.Avatar == "" {
return DefaultAvatarLink() return DefaultAvatarLink()
} }
if size > 0 {
return setting.AppSubURL + "/avatars/" + u.Avatar + "?size=" + strconv.Itoa(size)
}
return setting.AppSubURL + "/avatars/" + u.Avatar return setting.AppSubURL + "/avatars/" + u.Avatar
case setting.DisableGravatar, setting.OfflineMode: case setting.DisableGravatar, setting.OfflineMode:
if u.Avatar == "" { if u.Avatar == "" {
@ -89,7 +92,9 @@ func (u *User) RealSizedAvatarLink(size int) string {
log.Error("GenerateRandomAvatar: %v", err) 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 setting.AppSubURL + "/avatars/" + u.Avatar
} }
return SizedAvatarLink(u.AvatarEmail, size) return SizedAvatarLink(u.AvatarEmail, size)