@@ -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