From d93f3222a5eb88fbc0f192c3bf3a0ebfd7ccc6c9 Mon Sep 17 00:00:00 2001
From: KN4CK3R <admin@oldschoolhack.me>
Date: Tue, 4 Apr 2023 10:14:46 +0200
Subject: [PATCH] Use ghost user if package creator does not exist (#23822)

Fixes #23818
---
 models/packages/descriptor.go | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/models/packages/descriptor.go b/models/packages/descriptor.go
index 06699b5d57..974c5b2c36 100644
--- a/models/packages/descriptor.go
+++ b/models/packages/descriptor.go
@@ -5,6 +5,7 @@ package packages
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"net/url"
 
@@ -26,6 +27,7 @@ import (
 	"code.gitea.io/gitea/modules/packages/rubygems"
 	"code.gitea.io/gitea/modules/packages/swift"
 	"code.gitea.io/gitea/modules/packages/vagrant"
+	"code.gitea.io/gitea/modules/util"
 
 	"github.com/hashicorp/go-version"
 )
@@ -99,7 +101,11 @@ func GetPackageDescriptor(ctx context.Context, pv *PackageVersion) (*PackageDesc
 	}
 	creator, err := user_model.GetUserByID(ctx, pv.CreatorID)
 	if err != nil {
-		return nil, err
+		if errors.Is(err, util.ErrNotExist) {
+			creator = user_model.NewGhostUser()
+		} else {
+			return nil, err
+		}
 	}
 	var semVer *version.Version
 	if p.SemverCompatible {