From f8898c30dc028e8bddadffacbd357c76b0c3506b Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Wed, 2 Mar 2022 17:32:18 +0100 Subject: [PATCH] Add note to GPG key response if user has no keys (#18961) * Prevent invalid key response. * Display note instead of 404 response. * Fixed test. Co-authored-by: zeripath Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: techknowlogick --- integrations/user_test.go | 1 + routers/web/user/home.go | 3 +++ 2 files changed, 4 insertions(+) diff --git a/integrations/user_test.go b/integrations/user_test.go index c12c2be40..4cfe7700e 100644 --- a/integrations/user_test.go +++ b/integrations/user_test.go @@ -121,6 +121,7 @@ func TestExportUserGPGKeys(t *testing.T) { defer prepareTestEnv(t)() // Export empty key list testExportUserGPGKeys(t, "user1", `-----BEGIN PGP PUBLIC KEY BLOCK----- +Note: This user hasn't uploaded any GPG keys. =twTO diff --git a/routers/web/user/home.go b/routers/web/user/home.go index 33512d97c..379e1f8e2 100644 --- a/routers/web/user/home.go +++ b/routers/web/user/home.go @@ -736,6 +736,7 @@ func ShowGPGKeys(ctx *context.Context, uid int64) { ctx.ServerError("ListGPGKeys", err) return } + entities := make([]*openpgp.Entity, 0) failedEntitiesID := make([]string, 0) for _, k := range keys { @@ -755,6 +756,8 @@ func ShowGPGKeys(ctx *context.Context, uid int64) { headers := make(map[string]string) if len(failedEntitiesID) > 0 { // If some key need re-import to be exported headers["Note"] = fmt.Sprintf("The keys with the following IDs couldn't be exported and need to be reuploaded %s", strings.Join(failedEntitiesID, ", ")) + } else if len(entities) == 0 { + headers["Note"] = "This user hasn't uploaded any GPG keys." } writer, _ := armor.Encode(&buf, "PGP PUBLIC KEY BLOCK", headers) for _, e := range entities {