@@ -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"
@@ -281,7 +284,17 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
281284 }
282285
283286 // We don't check doer's permission here because their permissions have been checked
284- // before ids were written to the auto_merge table
287+ // before ids were stored to the auto_merge table
288+ perm := access_model.Permission {AccessMode : perm .AccessModeWrite }
289+
290+ if err := pull_service .CheckPullMergeable (ctx , doer , & perm , pr , pull_service .MergeCheckTypeGeneral , false ); err != nil {
291+ if errors .Is (pull_service .ErrUserNotAllowedToMerge , err ) {
292+ log .Info ("%-v was scheduled to automerge by an unauthorized user" , pr )
293+ return
294+ }
295+ log .Error ("%-v CheckPullMergeable: %v" , pr , err )
296+ return
297+ }
285298
286299 if err := pull_service .Merge (ctx , pr , doer , baseGitRepo , scheduledPRM .MergeStyle , "" , scheduledPRM .Message , true ); err != nil {
287300 log .Error ("pull_service.Merge: %v" , err )
0 commit comments