Clarify permission "HasAccess" behavior (#30585)

Follow #30495

"HasAccess" behavior wasn't clear, to make it clear:

* Use a new name `HasAnyUnitAccess`, it will be easier to review related
code and permission problems.
* Separate everyone access mode to a separate field, then all calls to
HasAccess are reverted to old behavior before #30495.
* Add new tests.

---------

Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
wxiaoguang 2024-04-20 11:15:04 +08:00 committed by GitHub
parent 89e39872ff
commit 48d4580dd5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 96 additions and 41 deletions

View file

@ -218,7 +218,7 @@ func repoAssignment() func(ctx *context.APIContext) {
}
}
if !ctx.Repo.HasAccess() {
if !ctx.Repo.Permission.HasAnyUnitAccess() {
ctx.NotFound()
return
}
@ -412,7 +412,7 @@ func reqRepoReader(unitType unit.Type) func(ctx *context.APIContext) {
// reqAnyRepoReader user should have any permission to read repository or permissions of site admin
func reqAnyRepoReader() func(ctx *context.APIContext) {
return func(ctx *context.APIContext) {
if !ctx.Repo.HasAccess() && !ctx.IsUserSiteAdmin() {
if !ctx.Repo.Permission.HasAnyUnitAccess() && !ctx.IsUserSiteAdmin() {
ctx.Error(http.StatusForbidden, "reqAnyRepoReader", "user should have any permission to read repository or permissions of site admin")
return
}