Browse Source

repo: disallow web ui to delete protected branch after PR merged (#4803)

* Disallow web ui to delete protected branch

* Fix for branches not yet protected

Had to change how error was handled. If a branch had not yet been protected the error would be generated.

Reworked to start as false and then use the protected if it was found.
bayangan1991 6 years ago
parent
commit
51e087fd87
1 changed files with 7 additions and 1 deletions
  1. 7 1
      routes/repo/issue.go

+ 7 - 1
routes/repo/issue.go

@@ -642,8 +642,14 @@ func viewIssue(c *context.Context, isPullList bool) {
 
 	if issue.IsPull && issue.PullRequest.HasMerged {
 		pull := issue.PullRequest
+		branchProtected := false
+		protectBranch, err := models.GetProtectBranchOfRepoByName(pull.BaseRepoID, pull.HeadBranch)
+		if err == nil {
+			branchProtected = protectBranch.Protected
+		}
 		c.Data["IsPullBranchDeletable"] = pull.BaseRepoID == pull.HeadRepoID &&
-			c.Repo.IsWriter() && c.Repo.GitRepo.IsBranchExist(pull.HeadBranch)
+			c.Repo.IsWriter() && c.Repo.GitRepo.IsBranchExist(pull.HeadBranch) &&
+			!branchProtected
 
 		deleteBranchUrl := c.Repo.RepoLink + "/branches/delete/" + pull.HeadBranch
 		c.Data["DeleteBranchLink"] = fmt.Sprintf("%s?commit=%s&redirect_to=%s", deleteBranchUrl, pull.MergedCommitID, c.Data["Link"])