Add permission check when deleting branch after automerge succeed

This commit is contained in:
Lunny Xiao 2024-11-08 10:52:16 -08:00
parent c879891fe1
commit 6d79d8ac4c
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A

View File

@ -15,6 +15,7 @@ import (
access_model "code.gitea.io/gitea/models/perm/access"
pull_model "code.gitea.io/gitea/models/pull"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unit"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/gitrepo"
@ -306,8 +307,16 @@ func handlePullRequestAutoMerge(pullID int64, sha string) {
}
if pr.Flow == issues_model.PullRequestFlowGithub && scheduledPRM.DeleteBranchAfterMerge {
perm, err := access_model.GetUserRepoPermission(ctx, pr.HeadRepo, doer)
if err != nil {
log.Error("GetUserRepoPermission %-v: %v", pr.HeadRepo, err)
return
}
if perm.CanWrite(unit.TypeCode) { // default branch and branch protection will be checked in DeleteBranch
if err := repo_service.DeleteBranch(ctx, doer, pr.HeadRepo, headGitRepo, pr.HeadBranch); err != nil {
log.Error("deleteBranch after automerge for pull[%d] failed: %v", pr.ID, err)
}
}
}
}