From d59536c222857713d95846d77903282afe608f23 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sun, 29 Dec 2019 15:24:50 +0100 Subject: [PATCH] [BugFix] use default avatar for ghost user (fix 500 error) (#9536) * remove since it is there for 3years * fix 500 error for ghost avatar * dont insert "-1" in any case to issue.poster_id * fix lint * Test: ghost avatar link * fix test * Revert "remove since it is there for 3years" This reverts commit fd9ad05159c84ba804b126d2a959963d82578b22. * Revert "dont insert "-1" in any case to issue.poster_id" This reverts commit 05469ab6d815a6cc6478a256018b9ed1a12749e0. Co-authored-by: zeripath --- integrations/links_test.go | 1 + routers/user/avatar.go | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/integrations/links_test.go b/integrations/links_test.go index 329e54528..e69d9306e 100644 --- a/integrations/links_test.go +++ b/integrations/links_test.go @@ -51,6 +51,7 @@ func TestRedirectsNoLogin(t *testing.T) { "/user2/repo1/src/master": "/user2/repo1/src/branch/master", "/user2/repo1/src/master/file.txt": "/user2/repo1/src/branch/master/file.txt", "/user2/repo1/src/master/directory/file.txt": "/user2/repo1/src/branch/master/directory/file.txt", + "/user/avatar/Ghost/-1": "/img/avatar_default.png", } for link, redirectLink := range redirects { req := NewRequest(t, "GET", link) diff --git a/routers/user/avatar.go b/routers/user/avatar.go index 20597c72f..045206c50 100644 --- a/routers/user/avatar.go +++ b/routers/user/avatar.go @@ -6,6 +6,7 @@ package user import ( "strconv" + "strings" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" @@ -23,14 +24,19 @@ func Avatar(ctx *context.Context) { log.Debug("Asked avatar for user %v and size %v", userName, size) - user, err := models.GetUserByName(userName) - if err != nil { - if models.IsErrUserNotExist(err) { - ctx.ServerError("Requested avatar for invalid user", err) - } else { - ctx.ServerError("Retrieving user by name", err) + var user *models.User + if strings.ToLower(userName) != "ghost" { + user, err = models.GetUserByName(userName) + if err != nil { + if models.IsErrUserNotExist(err) { + ctx.ServerError("Requested avatar for invalid user", err) + } else { + ctx.ServerError("Retrieving user by name", err) + } + return } - return + } else { + user = models.NewGhostUser() } ctx.Redirect(user.RealSizedAvatarLink(size))