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 <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
KN4CK3R 2022-03-02 17:32:18 +01:00 committed by GitHub
parent df9802ca61
commit f8898c30dc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 0 deletions

View file

@ -121,6 +121,7 @@ func TestExportUserGPGKeys(t *testing.T) {
defer prepareTestEnv(t)() defer prepareTestEnv(t)()
// Export empty key list // Export empty key list
testExportUserGPGKeys(t, "user1", `-----BEGIN PGP PUBLIC KEY BLOCK----- testExportUserGPGKeys(t, "user1", `-----BEGIN PGP PUBLIC KEY BLOCK-----
Note: This user hasn't uploaded any GPG keys.
=twTO =twTO

View file

@ -736,6 +736,7 @@ func ShowGPGKeys(ctx *context.Context, uid int64) {
ctx.ServerError("ListGPGKeys", err) ctx.ServerError("ListGPGKeys", err)
return return
} }
entities := make([]*openpgp.Entity, 0) entities := make([]*openpgp.Entity, 0)
failedEntitiesID := make([]string, 0) failedEntitiesID := make([]string, 0)
for _, k := range keys { for _, k := range keys {
@ -755,6 +756,8 @@ func ShowGPGKeys(ctx *context.Context, uid int64) {
headers := make(map[string]string) headers := make(map[string]string)
if len(failedEntitiesID) > 0 { // If some key need re-import to be exported 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, ", ")) 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) writer, _ := armor.Encode(&buf, "PGP PUBLIC KEY BLOCK", headers)
for _, e := range entities { for _, e := range entities {