@@ -16,6 +16,7 @@ import (
1616 "code.gitea.io/gitea/modules/base"
1717 "code.gitea.io/gitea/modules/log"
1818 "code.gitea.io/gitea/modules/optional"
19+ "code.gitea.io/gitea/modules/repository"
1920 "code.gitea.io/gitea/modules/setting"
2021 "code.gitea.io/gitea/modules/structs"
2122 "code.gitea.io/gitea/modules/web"
@@ -48,7 +49,7 @@ func getForkRepository(ctx *context.Context) *repo_model.Repository {
4849 ctx .Data ["repo_name" ] = forkRepo .Name
4950 ctx .Data ["description" ] = forkRepo .Description
5051 ctx .Data ["IsPrivate" ] = forkRepo .IsPrivate || forkRepo .Owner .Visibility == structs .VisibleTypePrivate
51- canForkToUser := forkRepo .OwnerID != ctx .Doer .ID && ! repo_model .HasForkedRepo (ctx , ctx .Doer .ID , forkRepo .ID )
52+ canForkToUser := repository . CanUserForkBetweenOwners ( forkRepo .OwnerID , ctx .Doer .ID ) && ! repo_model .HasForkedRepo (ctx , ctx .Doer .ID , forkRepo .ID )
5253
5354 ctx .Data ["ForkRepo" ] = forkRepo
5455
@@ -66,7 +67,7 @@ func getForkRepository(ctx *context.Context) *repo_model.Repository {
6667
6768 traverseParentRepo := forkRepo
6869 for {
69- if ctx .Doer .ID == traverseParentRepo .OwnerID {
70+ if ! repository . CanUserForkBetweenOwners ( ctx .Doer .ID , traverseParentRepo .OwnerID ) {
7071 canForkToUser = false
7172 } else {
7273 for i , org := range orgs {
@@ -162,7 +163,7 @@ func ForkPost(ctx *context.Context) {
162163 var err error
163164 traverseParentRepo := forkRepo
164165 for {
165- if ctxUser .ID == traverseParentRepo .OwnerID {
166+ if ! repository . CanUserForkBetweenOwners ( ctxUser .ID , traverseParentRepo .OwnerID ) {
166167 ctx .RenderWithErr (ctx .Tr ("repo.settings.new_owner_has_same_repo" ), tplFork , & form )
167168 return
168169 }
0 commit comments