diff options
Diffstat (limited to 'routers/private/hook.go')
-rw-r--r-- | routers/private/hook.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/routers/private/hook.go b/routers/private/hook.go index 1f6ab2f673..074e3aef19 100644 --- a/routers/private/hook.go +++ b/routers/private/hook.go @@ -33,6 +33,7 @@ func HookPreReceive(ctx *macaron.Context) { gitAlternativeObjectDirectories := ctx.QueryTrim("gitAlternativeObjectDirectories") gitQuarantinePath := ctx.QueryTrim("gitQuarantinePath") prID := ctx.QueryInt64("prID") + isDeployKey := ctx.QueryBool("isDeployKey") branchName := strings.TrimPrefix(refFullName, git.BranchPrefix) repo, err := models.GetRepositoryByOwnerAndName(ownerName, repoName) @@ -95,7 +96,12 @@ func HookPreReceive(ctx *macaron.Context) { } } - canPush := protectBranch.CanUserPush(userID) + canPush := false + if isDeployKey { + canPush = protectBranch.WhitelistDeployKeys + } else { + canPush = protectBranch.CanUserPush(userID) + } if !canPush && prID > 0 { pr, err := models.GetPullRequestByID(prID) if err != nil { |