@@ -5,12 +5,15 @@ package automerge
55
66import (
77 "context"
8+ "errors"
89 "fmt"
910 "strconv"
1011 "strings"
1112
1213 "code.gitea.io/gitea/models/db"
1314 issues_model "code.gitea.io/gitea/models/issues"
15+ "code.gitea.io/gitea/models/perm"
16+ access_model "code.gitea.io/gitea/models/perm/access"
1417 pull_model "code.gitea.io/gitea/models/pull"
1518 repo_model "code.gitea.io/gitea/models/repo"
1619 user_model "code.gitea.io/gitea/models/user"
@@ -269,7 +272,17 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
269272 }
270273
271274 // We don't check doer's permission here because their permissions have been checked
272- // before ids were written to the auto_merge table
275+ // before ids were stored to the auto_merge table
276+ perm := access_model.Permission {AccessMode : perm .AccessModeWrite }
277+
278+ if err := pull_service .CheckPullMergeable (ctx , doer , & perm , pr , pull_service .MergeCheckTypeGeneral , false ); err != nil {
279+ if errors .Is (pull_service .ErrUserNotAllowedToMerge , err ) {
280+ log .Info ("%-v was scheduled to automerge by an unauthorized user" , pr )
281+ return
282+ }
283+ log .Error ("%-v CheckPullMergeable: %v" , pr , err )
284+ return
285+ }
273286
274287 if err := pull_service .Merge (ctx , pr , doer , baseGitRepo , scheduledPRM .MergeStyle , "" , scheduledPRM .Message , true ); err != nil {
275288 log .Error ("pull_service.Merge: %v" , err )
0 commit comments