diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-09-14 16:16:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-14 16:16:22 +0800 |
commit | 1739e84ac02c0384c04576a00abab9348293f9c7 (patch) | |
tree | 1015e68f36421f274d2e883ff3ddb0cb29b6af71 /routers/repo/setting.go | |
parent | be3319b3d545289b772d7a92b4b62205863954d9 (diff) | |
download | gitea-1739e84ac02c0384c04576a00abab9348293f9c7.tar.gz gitea-1739e84ac02c0384c04576a00abab9348293f9c7.zip |
improve protected branch to add whitelist support (#2451)
* improve protected branch to add whitelist support
* fix lint
* fix style check
* fix tests
* fix description on UI and import
* fix test
* bug fixed
* fix tests and languages
* move isSliceInt64Eq to util pkg; improve function names & typo
Diffstat (limited to 'routers/repo/setting.go')
-rw-r--r-- | routers/repo/setting.go | 138 |
1 files changed, 1 insertions, 137 deletions
diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 6e12c7ad6d..eb4136b07d 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -25,6 +25,7 @@ const ( tplGithooks base.TplName = "repo/settings/githooks" tplGithookEdit base.TplName = "repo/settings/githook_edit" tplDeployKeys base.TplName = "repo/settings/deploy_keys" + tplProtectedBranch base.TplName = "repo/settings/protected_branch" ) // Settings show a repository's settings page @@ -437,143 +438,6 @@ func DeleteCollaboration(ctx *context.Context) { }) } -// ProtectedBranch render the page to protect the repository -func ProtectedBranch(ctx *context.Context) { - ctx.Data["Title"] = ctx.Tr("repo.settings") - ctx.Data["PageIsSettingsBranches"] = true - - protectedBranches, err := ctx.Repo.Repository.GetProtectedBranches() - if err != nil { - ctx.Handle(500, "GetProtectedBranches", err) - return - } - ctx.Data["ProtectedBranches"] = protectedBranches - - branches := ctx.Data["Branches"].([]string) - leftBranches := make([]string, 0, len(branches)-len(protectedBranches)) - for _, b := range branches { - var protected bool - for _, pb := range protectedBranches { - if b == pb.BranchName { - protected = true - break - } - } - if !protected { - leftBranches = append(leftBranches, b) - } - } - - ctx.Data["LeftBranches"] = leftBranches - - ctx.HTML(200, tplBranches) -} - -// ProtectedBranchPost response for protect for a branch of a repository -func ProtectedBranchPost(ctx *context.Context) { - ctx.Data["Title"] = ctx.Tr("repo.settings") - ctx.Data["PageIsSettingsBranches"] = true - - repo := ctx.Repo.Repository - - switch ctx.Query("action") { - case "default_branch": - if ctx.HasError() { - ctx.HTML(200, tplBranches) - return - } - - branch := ctx.Query("branch") - if !ctx.Repo.GitRepo.IsBranchExist(branch) { - ctx.Status(404) - return - } else if repo.DefaultBranch != branch { - repo.DefaultBranch = branch - if err := ctx.Repo.GitRepo.SetDefaultBranch(branch); err != nil { - if !git.IsErrUnsupportedVersion(err) { - ctx.Handle(500, "SetDefaultBranch", err) - return - } - } - if err := repo.UpdateDefaultBranch(); err != nil { - ctx.Handle(500, "SetDefaultBranch", err) - return - } - } - - log.Trace("Repository basic settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name) - - ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success")) - ctx.Redirect(setting.AppSubURL + ctx.Req.URL.Path) - case "protected_branch": - if ctx.HasError() { - ctx.JSON(200, map[string]string{ - "redirect": setting.AppSubURL + ctx.Req.URL.Path, - }) - return - } - - branchName := strings.ToLower(ctx.Query("branchName")) - if len(branchName) == 0 || !ctx.Repo.GitRepo.IsBranchExist(branchName) { - ctx.JSON(200, map[string]string{ - "redirect": setting.AppSubURL + ctx.Req.URL.Path, - }) - return - } - - canPush := ctx.QueryBool("canPush") - - if canPush { - if err := ctx.Repo.Repository.AddProtectedBranch(branchName, canPush); err != nil { - ctx.Flash.Error(ctx.Tr("repo.settings.add_protected_branch_failed", branchName)) - ctx.JSON(200, map[string]string{ - "status": "ok", - }) - return - } - - ctx.Flash.Success(ctx.Tr("repo.settings.add_protected_branch_success", branchName)) - ctx.JSON(200, map[string]string{ - "redirect": setting.AppSubURL + ctx.Req.URL.Path, - }) - } else { - if err := ctx.Repo.Repository.DeleteProtectedBranch(ctx.QueryInt64("id")); err != nil { - ctx.Flash.Error("DeleteProtectedBranch: " + err.Error()) - } else { - ctx.Flash.Success(ctx.Tr("repo.settings.remove_protected_branch_success", branchName)) - } - - ctx.JSON(200, map[string]interface{}{ - "status": "ok", - }) - } - default: - ctx.Handle(404, "", nil) - } -} - -// ChangeProtectedBranch response for changing access of a protect branch -func ChangeProtectedBranch(ctx *context.Context) { - if err := ctx.Repo.Repository.ChangeProtectedBranch( - ctx.QueryInt64("id"), - ctx.QueryBool("canPush")); err != nil { - log.Error(4, "ChangeProtectedBranch: %v", err) - } -} - -// DeleteProtectedBranch delete a protection for a branch of a repository -func DeleteProtectedBranch(ctx *context.Context) { - if err := ctx.Repo.Repository.DeleteProtectedBranch(ctx.QueryInt64("id")); err != nil { - ctx.Flash.Error("DeleteProtectedBranch: " + err.Error()) - } else { - ctx.Flash.Success(ctx.Tr("repo.settings.remove_protected_branch_success")) - } - - ctx.JSON(200, map[string]interface{}{ - "redirect": ctx.Repo.RepoLink + "/settings/branches", - }) -} - // parseOwnerAndRepo get repos by owner func parseOwnerAndRepo(ctx *context.Context) (*models.User, *models.Repository) { owner, err := models.GetUserByName(ctx.Params(":username")) |