code.gitea.io/gitea@v1.19.3/modules/repository/fork.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repository 5 6 import ( 7 "code.gitea.io/gitea/models/organization" 8 repo_model "code.gitea.io/gitea/models/repo" 9 user_model "code.gitea.io/gitea/models/user" 10 ) 11 12 // CanUserForkRepo returns true if specified user can fork repository. 13 func CanUserForkRepo(user *user_model.User, repo *repo_model.Repository) (bool, error) { 14 if user == nil { 15 return false, nil 16 } 17 if repo.OwnerID != user.ID && !repo_model.HasForkedRepo(user.ID, repo.ID) { 18 return true, nil 19 } 20 ownedOrgs, err := organization.GetOrgsCanCreateRepoByUserID(user.ID) 21 if err != nil { 22 return false, err 23 } 24 for _, org := range ownedOrgs { 25 if repo.OwnerID != org.ID && !repo_model.HasForkedRepo(org.ID, repo.ID) { 26 return true, nil 27 } 28 } 29 return false, nil 30 }