code.gitea.io/gitea@v1.22.3/modules/repository/delete.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repository 5 6 import ( 7 "context" 8 9 "code.gitea.io/gitea/models/organization" 10 repo_model "code.gitea.io/gitea/models/repo" 11 user_model "code.gitea.io/gitea/models/user" 12 ) 13 14 // CanUserDelete returns true if user could delete the repository 15 func CanUserDelete(ctx context.Context, repo *repo_model.Repository, user *user_model.User) (bool, error) { 16 if user.IsAdmin || user.ID == repo.OwnerID { 17 return true, nil 18 } 19 20 if err := repo.LoadOwner(ctx); err != nil { 21 return false, err 22 } 23 24 if repo.Owner.IsOrganization() { 25 isAdmin, err := organization.OrgFromUser(repo.Owner).IsOrgAdmin(ctx, user.ID) 26 if err != nil { 27 return false, err 28 } 29 return isAdmin, nil 30 } 31 32 return false, nil 33 }