@@ -5,12 +5,15 @@ package automerge
5
5
6
6
import (
7
7
"context"
8
+ "errors"
8
9
"fmt"
9
10
"strconv"
10
11
"strings"
11
12
12
13
"code.gitea.io/gitea/models/db"
13
14
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"
14
17
pull_model "code.gitea.io/gitea/models/pull"
15
18
repo_model "code.gitea.io/gitea/models/repo"
16
19
user_model "code.gitea.io/gitea/models/user"
@@ -281,7 +284,17 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
281
284
}
282
285
283
286
// 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
+ }
285
298
286
299
if err := pull_service .Merge (ctx , pr , doer , baseGitRepo , scheduledPRM .MergeStyle , "" , scheduledPRM .Message , true ); err != nil {
287
300
log .Error ("pull_service.Merge: %v" , err )
0 commit comments