[suggest] change merge strategy: do not check write access if user in merge white list #5176

Closed
opened 2025-11-02 06:16:55 -06:00 by GiteaMirror · 2 comments
Owner

Originally created by @everhopingandwaiting on GitHub (Apr 3, 2020).

  • Gitea version (or commit ref): 1.12.0+dev-82-g3723b0647
  • Git version: 2.24
  • Operating system: arch linux
  • Database (use [x]):
    • PostgreSQL
    • MySQL
    • MSSQL
    • SQLite
  • Can you reproduce the bug at https://try.gitea.io:
    • Yes (provide example URL)
    • No
    • Not relevant
  • Log gist:

Description

f685edf510/services/pull/merge.go (L516)

before

// IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections
func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) {
	if !p.CanWrite(models.UnitTypeCode) {
		return false, nil
	}

	err := pr.LoadProtectedBranch()
	if err != nil {
		return false, err
	}

	if pr.ProtectedBranch == nil || pr.ProtectedBranch.IsUserMergeWhitelisted(user.ID) {
		return true, nil
	}

	return false, nil
}

atter:

// IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections
func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) {
	//if !p.CanWrite(models.UnitTypeCode) {
	//	return false, nil
	//}

	err := pr.LoadProtectedBranch()
	if err != nil {
		return false, err
	}

	if (p.CanWrite(models.UnitTypeCode) && pr.ProtectedBranch == nil) || pr.ProtectedBranch.IsUserMergeWhitelisted(user.ID) {
		return true, nil
	}

	return false, nil
}

remove Route verification

m.Post("/merge", context.RepoMustNotBeArchived(), /*reqRepoPullsWriter,*/ bindIgnErr(auth.MergePullRequestForm{}), repo.MergePullRequest)

...

Screenshots

image

Originally created by @everhopingandwaiting on GitHub (Apr 3, 2020). - Gitea version (or commit ref): 1.12.0+dev-82-g3723b0647 - Git version: 2.24 - Operating system: arch linux - Database (use `[x]`): - [ ] PostgreSQL - [x] MySQL - [ ] MSSQL - [ ] SQLite - Can you reproduce the bug at https://try.gitea.io: - [ ] Yes (provide example URL) - [x] No - [x] Not relevant - Log gist: ## Description https://github.com/go-gitea/gitea/blob/f685edf51073ac3be50ff00073a2432b4113bf82/services/pull/merge.go#L516 > before ```go // IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) { if !p.CanWrite(models.UnitTypeCode) { return false, nil } err := pr.LoadProtectedBranch() if err != nil { return false, err } if pr.ProtectedBranch == nil || pr.ProtectedBranch.IsUserMergeWhitelisted(user.ID) { return true, nil } return false, nil } ``` > atter: ```go // IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *models.User) (bool, error) { //if !p.CanWrite(models.UnitTypeCode) { // return false, nil //} err := pr.LoadProtectedBranch() if err != nil { return false, err } if (p.CanWrite(models.UnitTypeCode) && pr.ProtectedBranch == nil) || pr.ProtectedBranch.IsUserMergeWhitelisted(user.ID) { return true, nil } return false, nil } ``` #### remove Route verification ```go m.Post("/merge", context.RepoMustNotBeArchived(), /*reqRepoPullsWriter,*/ bindIgnErr(auth.MergePullRequestForm{}), repo.MergePullRequest) ``` ... ## Screenshots ![image](https://user-images.githubusercontent.com/6021724/78335544-62348080-75c0-11ea-95a8-13fa226d4456.png) <!-- **If this issue involves the Web Interface, please include a screenshot** -->
GiteaMirror added the type/proposal label 2025-11-02 06:16:55 -06:00
Author
Owner

@guillep2k commented on GitHub (Apr 4, 2020):

I would have thought this was the case already. Care to send a PR?

@guillep2k commented on GitHub (Apr 4, 2020): I would have thought this was the case already. Care to send a PR?
Author
Owner

@everhopingandwaiting commented on GitHub (Apr 4, 2020):

OK,i will check my local code and test it later

@everhopingandwaiting commented on GitHub (Apr 4, 2020): OK,i will check my local code and test it later
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#5176