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  }