Skip to content

Commit

Permalink
Fix Agit pull request permission check (#32999)
Browse files Browse the repository at this point in the history
user with read permission should also can create agit flow pull request.
looks this logic was broken in
#31033 this pull request try fix
it and add test code.

---------

Signed-off-by: a1012112796 <[email protected]>
Co-authored-by: wxiaoguang <[email protected]>
  • Loading branch information
a1012112796 and wxiaoguang authored Dec 27, 2024
1 parent 2d1a171 commit a7b2707
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
3 changes: 2 additions & 1 deletion services/pull/pull.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error {
}

// user should be a collaborator or a member of the organization for base repo
if !issue.Poster.IsAdmin {
canCreate := issue.Poster.IsAdmin || pr.Flow == issues_model.PullRequestFlowAGit
if !canCreate {
canCreate, err := repo_model.IsOwnerMemberCollaborator(ctx, repo, issue.Poster.ID)
if err != nil {
return err
Expand Down
19 changes: 19 additions & 0 deletions tests/integration/pull_create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"strings"
"testing"

"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/test"
"code.gitea.io/gitea/tests"

Expand Down Expand Up @@ -226,3 +227,21 @@ func TestPullCreatePrFromBaseToFork(t *testing.T) {
assert.Regexp(t, "^/user1/repo1/pulls/[0-9]*$", url)
})
}

func TestCreateAgitPullWithReadPermission(t *testing.T) {
onGiteaRun(t, func(t *testing.T, u *url.URL) {
dstPath := t.TempDir()

u.Path = "user2/repo1.git"
u.User = url.UserPassword("user4", userPassword)

t.Run("Clone", doGitClone(dstPath, u))

t.Run("add commit", doGitAddSomeCommits(dstPath, "master"))

t.Run("do agit pull create", func(t *testing.T) {
err := git.NewCommand(git.DefaultContext, "push", "origin", "HEAD:refs/for/master", "-o").AddDynamicArguments("topic=" + "test-topic").Run(&git.RunOpts{Dir: dstPath})
assert.NoError(t, err)
})
})
}

0 comments on commit a7b2707

Please sign in to comment.