mirror of
https://github.com/go-gitea/gitea.git
synced 2026-05-21 19:39:54 +02:00
Backport #37430
This commit is contained in:
parent
2a61284ba5
commit
cff6eb5661
@ -115,7 +115,7 @@ func (run *ActionRun) RefTooltip() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LoadAttributes load Repo TriggerUser if not loaded
|
// LoadAttributes load Repo TriggerUser if not loaded
|
||||||
func (run *ActionRun) LoadAttributes(ctx context.Context) error {
|
func (run *ActionRun) LoadAttributes(ctx context.Context) (err error) {
|
||||||
if run == nil {
|
if run == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -129,11 +129,10 @@ func (run *ActionRun) LoadAttributes(ctx context.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if run.TriggerUser == nil {
|
if run.TriggerUser == nil {
|
||||||
u, err := user_model.GetPossibleUserByID(ctx, run.TriggerUserID)
|
run.TriggerUserID, run.TriggerUser, err = user_model.GetPossibleUserByID(ctx, run.TriggerUserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
run.TriggerUser = u
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -186,15 +186,7 @@ func (a *Action) LoadActUser(ctx context.Context) {
|
|||||||
if a.ActUser != nil {
|
if a.ActUser != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var err error
|
a.ActUserID, a.ActUser, _ = user_model.GetPossibleUserByID(ctx, a.ActUserID)
|
||||||
a.ActUser, err = user_model.GetPossibleUserByID(ctx, a.ActUserID)
|
|
||||||
if err == nil {
|
|
||||||
return
|
|
||||||
} else if user_model.IsErrUserNotExist(err) {
|
|
||||||
a.ActUser = user_model.NewGhostUser()
|
|
||||||
} else {
|
|
||||||
log.Error("GetUserByID(%d): %v", a.ActUserID, err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Action) LoadRepo(ctx context.Context) error {
|
func (a *Action) LoadRepo(ctx context.Context) error {
|
||||||
|
|||||||
@ -399,16 +399,7 @@ func (c *Comment) LoadPoster(ctx context.Context) (err error) {
|
|||||||
if c.Poster != nil {
|
if c.Poster != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
c.PosterID, c.Poster, err = user_model.GetPossibleUserByID(ctx, c.PosterID)
|
||||||
c.Poster, err = user_model.GetPossibleUserByID(ctx, c.PosterID)
|
|
||||||
if err != nil {
|
|
||||||
if user_model.IsErrUserNotExist(err) {
|
|
||||||
c.PosterID = user_model.GhostUserID
|
|
||||||
c.Poster = user_model.NewGhostUser()
|
|
||||||
} else {
|
|
||||||
log.Error("getUserByID[%d]: %v", c.ID, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -190,17 +190,10 @@ func (issue *Issue) IsTimetrackerEnabled(ctx context.Context) bool {
|
|||||||
|
|
||||||
// LoadPoster loads poster
|
// LoadPoster loads poster
|
||||||
func (issue *Issue) LoadPoster(ctx context.Context) (err error) {
|
func (issue *Issue) LoadPoster(ctx context.Context) (err error) {
|
||||||
if issue.Poster == nil && issue.PosterID != 0 {
|
if issue.Poster != nil {
|
||||||
issue.Poster, err = user_model.GetPossibleUserByID(ctx, issue.PosterID)
|
return nil
|
||||||
if err != nil {
|
|
||||||
issue.PosterID = user_model.GhostUserID
|
|
||||||
issue.Poster = user_model.NewGhostUser()
|
|
||||||
if !user_model.IsErrUserNotExist(err) {
|
|
||||||
return fmt.Errorf("getUserByID.(poster) [%d]: %w", issue.PosterID, err)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
issue.PosterID, issue.Poster, err = user_model.GetPossibleUserByID(ctx, issue.PosterID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -176,15 +176,7 @@ func (r *Review) LoadReviewer(ctx context.Context) (err error) {
|
|||||||
if r.ReviewerID == 0 || r.Reviewer != nil {
|
if r.ReviewerID == 0 || r.Reviewer != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r.Reviewer, err = user_model.GetPossibleUserByID(ctx, r.ReviewerID)
|
r.ReviewerID, r.Reviewer, err = user_model.GetPossibleUserByID(ctx, r.ReviewerID)
|
||||||
if err != nil {
|
|
||||||
if !user_model.IsErrUserNotExist(err) {
|
|
||||||
return fmt.Errorf("GetPossibleUserByID [%d]: %w", r.ReviewerID, err)
|
|
||||||
}
|
|
||||||
r.ReviewerID = user_model.GhostUserID
|
|
||||||
r.Reviewer = user_model.NewGhostUser()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,14 +5,12 @@ package pull
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
"code.gitea.io/gitea/modules/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// AutoMerge represents a pull request scheduled for merging when checks succeed
|
// AutoMerge represents a pull request scheduled for merging when checks succeed
|
||||||
@ -78,16 +76,8 @@ func GetScheduledMergeByPullID(ctx context.Context, pullID int64) (bool, *AutoMe
|
|||||||
return false, nil, err
|
return false, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
doer, err := user_model.GetPossibleUserByID(ctx, scheduledPRM.DoerID)
|
scheduledPRM.DoerID, scheduledPRM.Doer, err = user_model.GetPossibleUserByID(ctx, scheduledPRM.DoerID)
|
||||||
if errors.Is(err, util.ErrNotExist) {
|
return true, scheduledPRM, err
|
||||||
doer, err = user_model.NewGhostUser(), nil
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return false, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
scheduledPRM.Doer = doer
|
|
||||||
return true, scheduledPRM, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteScheduledAutoMerge delete a scheduled pull request
|
// DeleteScheduledAutoMerge delete a scheduled pull request
|
||||||
|
|||||||
@ -7,6 +7,7 @@ package user
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"html/template"
|
"html/template"
|
||||||
"mime"
|
"mime"
|
||||||
@ -1016,17 +1017,22 @@ func GetUserByIDs(ctx context.Context, ids []int64) ([]*User, error) {
|
|||||||
return users, err
|
return users, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPossibleUserByID returns the user if id > 0 or returns system user if id < 0
|
// GetPossibleUserByID returns the possible user and its ID. If the user doesn't exist, it returns Ghost user
|
||||||
func GetPossibleUserByID(ctx context.Context, id int64) (*User, error) {
|
func GetPossibleUserByID(ctx context.Context, id int64) (_ int64, u *User, err error) {
|
||||||
if id < 0 {
|
if id < 0 {
|
||||||
if newFunc, ok := globalVars().systemUserNewFuncs[id]; ok {
|
if newFunc, ok := globalVars().systemUserNewFuncs[id]; ok {
|
||||||
return newFunc(), nil
|
u = newFunc()
|
||||||
}
|
}
|
||||||
return nil, ErrUserNotExist{UID: id}
|
|
||||||
} else if id == 0 {
|
|
||||||
return nil, ErrUserNotExist{}
|
|
||||||
}
|
}
|
||||||
return GetUserByID(ctx, id)
|
if u == nil {
|
||||||
|
u, err = GetUserByID(ctx, id)
|
||||||
|
if errors.Is(err, util.ErrNotExist) {
|
||||||
|
u = NewGhostUser()
|
||||||
|
} else if err != nil {
|
||||||
|
return 0, nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return u.ID, u, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPossibleUserByIDs returns the users if id > 0 or returns system users if id < 0
|
// GetPossibleUserByIDs returns the users if id > 0 or returns system users if id < 0
|
||||||
|
|||||||
@ -11,8 +11,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestSystemUser(t *testing.T) {
|
func TestSystemUser(t *testing.T) {
|
||||||
u, err := GetPossibleUserByID(t.Context(), -1)
|
uid, u, err := GetPossibleUserByID(t.Context(), -1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, int64(-1), uid)
|
||||||
assert.Equal(t, "Ghost", u.Name)
|
assert.Equal(t, "Ghost", u.Name)
|
||||||
assert.Equal(t, "ghost", u.LowerName)
|
assert.Equal(t, "ghost", u.LowerName)
|
||||||
assert.True(t, u.IsGhost())
|
assert.True(t, u.IsGhost())
|
||||||
@ -21,8 +22,9 @@ func TestSystemUser(t *testing.T) {
|
|||||||
require.NotNil(t, u)
|
require.NotNil(t, u)
|
||||||
assert.Equal(t, "Ghost", u.Name)
|
assert.Equal(t, "Ghost", u.Name)
|
||||||
|
|
||||||
u, err = GetPossibleUserByID(t.Context(), -2)
|
uid, u, err = GetPossibleUserByID(t.Context(), -2)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, int64(-2), uid)
|
||||||
assert.Equal(t, "gitea-actions", u.Name)
|
assert.Equal(t, "gitea-actions", u.Name)
|
||||||
assert.Equal(t, "gitea-actions", u.LowerName)
|
assert.Equal(t, "gitea-actions", u.LowerName)
|
||||||
assert.True(t, u.IsGiteaActions())
|
assert.True(t, u.IsGiteaActions())
|
||||||
@ -31,6 +33,8 @@ func TestSystemUser(t *testing.T) {
|
|||||||
require.NotNil(t, u)
|
require.NotNil(t, u)
|
||||||
assert.Equal(t, "Gitea Actions", u.FullName)
|
assert.Equal(t, "Gitea Actions", u.FullName)
|
||||||
|
|
||||||
_, err = GetPossibleUserByID(t.Context(), -3)
|
uid, u, err = GetPossibleUserByID(t.Context(), 999999)
|
||||||
require.Error(t, err)
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, int64(-1), uid)
|
||||||
|
assert.Equal(t, "Ghost", u.Name)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -104,13 +104,9 @@ func getReleaseInfos(ctx *context.Context, opts *repo_model.FindReleasesOptions)
|
|||||||
releaseInfos := make([]*ReleaseInfo, 0, len(releases))
|
releaseInfos := make([]*ReleaseInfo, 0, len(releases))
|
||||||
for _, r := range releases {
|
for _, r := range releases {
|
||||||
if r.Publisher, ok = cacheUsers[r.PublisherID]; !ok {
|
if r.Publisher, ok = cacheUsers[r.PublisherID]; !ok {
|
||||||
r.Publisher, err = user_model.GetPossibleUserByID(ctx, r.PublisherID)
|
r.PublisherID, r.Publisher, err = user_model.GetPossibleUserByID(ctx, r.PublisherID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if user_model.IsErrUserNotExist(err) {
|
return nil, err
|
||||||
r.Publisher = user_model.NewGhostUser()
|
|
||||||
} else {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cacheUsers[r.PublisherID] = r.Publisher
|
cacheUsers[r.PublisherID] = r.Publisher
|
||||||
}
|
}
|
||||||
|
|||||||
@ -797,7 +797,7 @@ func ToOAuth2Application(app *auth.OAuth2Application) *api.OAuth2Application {
|
|||||||
|
|
||||||
// ToLFSLock convert a LFSLock to api.LFSLock
|
// ToLFSLock convert a LFSLock to api.LFSLock
|
||||||
func ToLFSLock(ctx context.Context, l *git_model.LFSLock) *api.LFSLock {
|
func ToLFSLock(ctx context.Context, l *git_model.LFSLock) *api.LFSLock {
|
||||||
u, err := user_model.GetPossibleUserByID(ctx, l.OwnerID)
|
_, u, err := user_model.GetPossibleUserByID(ctx, l.OwnerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user