From cd496f159d72782b5f2bb0da7f56a8cfc30d89ca Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 24 May 2026 17:42:02 -0500 Subject: [PATCH] fix: restore Permission field access in context middleware functions The upstream reading permission fix (#37781) refactored Repository to have direct IsAdmin/CanWrite/CanRead methods, but our fork's Repository struct still uses the Permission field for these. Keep the new CheckTokenScopes function but use ctx.Repo.Permission.* for the middleware functions. Co-Authored-By: Claude Opus 4.6 (1M context) --- services/context/permission.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/context/permission.go b/services/context/permission.go index ffdca9d662..996f24a1b4 100644 --- a/services/context/permission.go +++ b/services/context/permission.go @@ -48,7 +48,7 @@ func CheckTokenScopes(ctx *Context, repo *repo_model.Repository, scopes ...auth_ // RequireRepoAdmin returns a middleware for requiring repository admin permission func RequireRepoAdmin() func(ctx *Context) { return func(ctx *Context) { - if !ctx.IsSigned || !ctx.Repo.IsAdmin() { + if !ctx.IsSigned || !ctx.Repo.Permission.IsAdmin() { ctx.NotFound(nil) return } @@ -68,7 +68,7 @@ func CanWriteToBranch() func(ctx *Context) { // RequireUnitWriter returns a middleware for requiring repository write to one of the unit permission func RequireUnitWriter(unitTypes ...unit.Type) func(ctx *Context) { return func(ctx *Context) { - if slices.ContainsFunc(unitTypes, ctx.Repo.CanWrite) { + if slices.ContainsFunc(unitTypes, ctx.Repo.Permission.CanWrite) { return } ctx.NotFound(nil) @@ -79,7 +79,7 @@ func RequireUnitWriter(unitTypes ...unit.Type) func(ctx *Context) { func RequireUnitReader(unitTypes ...unit.Type) func(ctx *Context) { return func(ctx *Context) { for _, unitType := range unitTypes { - if ctx.Repo.CanRead(unitType) { + if ctx.Repo.Permission.CanRead(unitType) { return } if unitType == unit.TypeCode && canWriteAsMaintainer(ctx) {