@@ -12,6 +12,7 @@ import (
1212
1313 "code.gitea.io/gitea/models/db"
1414 issues_model "code.gitea.io/gitea/models/issues"
15+ "code.gitea.io/gitea/models/perm"
1516 access_model "code.gitea.io/gitea/models/perm/access"
1617 pull_model "code.gitea.io/gitea/models/pull"
1718 repo_model "code.gitea.io/gitea/models/repo"
@@ -275,17 +276,16 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
275276 }
276277
277278 // Merge if all checks succeeded
278- doer , err := user_model .GetUserByID (ctx , scheduledPRM .DoerID )
279+ // Use GetPossibleUserByID to allow merging by deleted users or bot users
280+ doer , err := user_model .GetPossibleUserByID (ctx , scheduledPRM .DoerID )
279281 if err != nil {
280282 log .Error ("Unable to get scheduled User[%d]: %v" , scheduledPRM .DoerID , err )
281283 return
282284 }
283285
284- perm , err := access_model .GetUserRepoPermission (ctx , pr .HeadRepo , doer )
285- if err != nil {
286- log .Error ("GetUserRepoPermission %-v: %v" , pr .HeadRepo , err )
287- return
288- }
286+ // We don't check doer's permission here because their permissions have been checked
287+ // before ids were stored to the auto_merge table
288+ perm := access_model.Permission {AccessMode : perm .AccessModeWrite }
289289
290290 if err := pull_service .CheckPullMergeable (ctx , doer , & perm , pr , pull_service .MergeCheckTypeGeneral , false ); err != nil {
291291 if errors .Is (err , pull_service .ErrUserNotAllowedToMerge ) {
0 commit comments