code.gitea.io/gitea@v1.19.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 "code.gitea.io/gitea/models/db" 8 "code.gitea.io/gitea/models/organization" 9 repo_model "code.gitea.io/gitea/models/repo" 10 user_model "code.gitea.io/gitea/models/user" 11 ) 12 13 // CanUserDelete returns true if user could delete the repository 14 func CanUserDelete(repo *repo_model.Repository, user *user_model.User) (bool, error) { 15 if user.IsAdmin || user.ID == repo.OwnerID { 16 return true, nil 17 } 18 19 if err := repo.LoadOwner(db.DefaultContext); err != nil { 20 return false, err 21 } 22 23 if repo.Owner.IsOrganization() { 24 isOwner, err := organization.OrgFromUser(repo.Owner).IsOwnedBy(user.ID) 25 if err != nil { 26 return false, err 27 } 28 return isOwner, nil 29 } 30 31 return false, nil 32 }