You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

delete.go 795B

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