diff --git a/models/perm/access/repo_permission.go b/models/perm/access/repo_permission.go index 21821f1746..ecb2472b6b 100644 --- a/models/perm/access/repo_permission.go +++ b/models/perm/access/repo_permission.go @@ -4,6 +4,7 @@ package access import ( + group_model "code.gitea.io/gitea/models/group" "context" "errors" "fmt" @@ -482,6 +483,14 @@ func GetIndividualUserRepoPermission(ctx context.Context, repo *repo_model.Repos return perm, nil } } + groupTeams, err := group_model.FindGroupTeams(ctx, repo.GroupID) + for _, team := range groupTeams { + if team.AccessMode >= perm_model.AccessModeAdmin { + perm.AccessMode = perm_model.AccessModeOwner + perm.unitsMode = nil + return perm, nil + } + } for _, u := range repo.Units { for _, team := range teams { @@ -529,6 +538,17 @@ func IsUserRepoAdmin(ctx context.Context, repo *repo_model.Repository, user *use return true, nil } + groupTeams, err := organization.GetUserGroupTeams(ctx, repo.GroupID, user.ID) + if err != nil { + return false, err + } + + for _, team := range groupTeams { + if team.AccessMode >= perm_model.AccessModeAdmin { + return true, nil + } + } + teams, err := organization.GetUserRepoTeams(ctx, repo.OwnerID, user.ID, repo.ID) if err != nil { return false, err