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  }