Skip to content

Commit 1f8cbba

Browse files
GiteaBotlunny
andauthored
Fix rename branch permission bug (#32066) (#32108)
Backport #32066 by @lunny The previous implementation requires admin permission to rename branches which should be write permission. Fix #31993 Co-authored-by: Lunny Xiao <[email protected]>
1 parent af0cab2 commit 1f8cbba

File tree

3 files changed

+6
-7
lines changed

3 files changed

+6
-7
lines changed

routers/web/web.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,8 +1065,6 @@ func registerRoutes(m *web.Route) {
10651065
m.Post("/{id}/delete", repo_setting.DeleteProtectedBranchRulePost)
10661066
}, repo.MustBeNotEmpty)
10671067

1068-
m.Post("/rename_branch", web.Bind(forms.RenameBranchForm{}), context.RepoMustNotBeArchived(), repo_setting.RenameBranchPost)
1069-
10701068
m.Group("/tags", func() {
10711069
m.Get("", repo_setting.ProtectedTags)
10721070
m.Post("", web.Bind(forms.ProtectTagForm{}), context.RepoMustNotBeArchived(), repo_setting.NewProtectedTagPost)
@@ -1298,6 +1296,7 @@ func registerRoutes(m *web.Route) {
12981296
}, web.Bind(forms.NewBranchForm{}))
12991297
m.Post("/delete", repo.DeleteBranchPost)
13001298
m.Post("/restore", repo.RestoreBranchPost)
1299+
m.Post("/rename", web.Bind(forms.RenameBranchForm{}), repo_setting.RenameBranchPost)
13011300
}, context.RepoMustNotBeArchived(), reqRepoCodeWriter, repo.MustBeNotEmpty)
13021301

13031302
m.Combo("/fork").Get(repo.Fork).Post(web.Bind(forms.CreateRepoForm{}), repo.ForkPost)

templates/repo/branch/list.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@
236236
<div class="header">
237237
{{ctx.Locale.Tr "repo.settings.rename_branch"}}
238238
</div>
239-
<form class="ui form" action="{{$.Repository.Link}}/settings/rename_branch" method="post">
239+
<form class="ui form" action="{{$.Repository.Link}}/branches/rename" method="post">
240240
<div class="content">
241241
{{.CsrfTokenHtml}}
242242
<div class="field default-branch-warning">

tests/integration/rename_branch_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ func testRenameBranch(t *testing.T, u *url.URL) {
2828

2929
// get branch setting page
3030
session := loginUser(t, "user2")
31-
req := NewRequest(t, "GET", "/user2/repo1/settings/branches")
31+
req := NewRequest(t, "GET", "/user2/repo1/branches")
3232
resp := session.MakeRequest(t, req, http.StatusOK)
3333
htmlDoc := NewHTMLParser(t, resp.Body)
3434

35-
req = NewRequestWithValues(t, "POST", "/user2/repo1/settings/rename_branch", map[string]string{
35+
req = NewRequestWithValues(t, "POST", "/user2/repo1/branches/rename", map[string]string{
3636
"_csrf": htmlDoc.GetCSRF(),
3737
"from": "master",
3838
"to": "main",
@@ -76,7 +76,7 @@ func testRenameBranch(t *testing.T, u *url.URL) {
7676
assert.Equal(t, "branch2", branch2.Name)
7777

7878
// rename branch2 to branch1
79-
req = NewRequestWithValues(t, "POST", "/user2/repo1/settings/rename_branch", map[string]string{
79+
req = NewRequestWithValues(t, "POST", "/user2/repo1/branches/rename", map[string]string{
8080
"_csrf": htmlDoc.GetCSRF(),
8181
"from": "branch2",
8282
"to": "branch1",
@@ -103,7 +103,7 @@ func testRenameBranch(t *testing.T, u *url.URL) {
103103
assert.True(t, branch1.IsDeleted) // virtual deletion
104104

105105
// rename branch2 to branch1 again
106-
req = NewRequestWithValues(t, "POST", "/user2/repo1/settings/rename_branch", map[string]string{
106+
req = NewRequestWithValues(t, "POST", "/user2/repo1/branches/rename", map[string]string{
107107
"_csrf": htmlDoc.GetCSRF(),
108108
"from": "branch2",
109109
"to": "branch1",

0 commit comments

Comments
 (0)