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 781B

123456789101112131415161718192021222324252627282930313233
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package repository
  4. import (
  5. "context"
  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(ctx context.Context, 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(ctx); 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. }