summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-12-20 16:19:54 +0100
committerBob Van Landuyt <bob@vanlanduyt.co>2017-12-29 11:15:26 +0100
commit0618487906a8b44eea7cb858aff45a5d5ea4cfff (patch)
treec6620ca499bba21b35a513ff195260478bd31333 /app/services
parent723d788fbef90b270cce1ca1d4bc228c54041eaa (diff)
downloadgitlab-ce-0618487906a8b44eea7cb858aff45a5d5ea4cfff.tar.gz
Forking a project to a namespace with lower visibility.bvl-fork-public-project-to-private-namespace
In this case the project will get the minimum between both visibilities. If that visibility is restricted, then a lower level will be picked.
Diffstat (limited to 'app/services')
-rw-r--r--app/services/projects/fork_service.rb14
1 files changed, 7 insertions, 7 deletions
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
index 03be7039b2a..348eb0bf8d8 100644
--- a/app/services/projects/fork_service.rb
+++ b/app/services/projects/fork_service.rb
@@ -26,7 +26,7 @@ module Projects
name: @project.name,
path: @project.path,
shared_runners_enabled: @project.shared_runners_enabled,
- namespace_id: @params[:namespace].try(:id) || current_user.namespace.id
+ namespace_id: target_namespace.id
}
if @project.avatar.present? && @project.avatar.image?
@@ -74,14 +74,14 @@ module Projects
Projects::ForksCountService.new(@project).refresh_cache
end
+ def target_namespace
+ @target_namespace ||= @params[:namespace] || current_user.namespace
+ end
+
def allowed_visibility_level
- project_level = @project.visibility_level
+ target_level = [@project.visibility_level, target_namespace.visibility_level].min
- if Gitlab::VisibilityLevel.non_restricted_level?(project_level)
- project_level
- else
- Gitlab::VisibilityLevel.highest_allowed_level
- end
+ Gitlab::VisibilityLevel.closest_allowed_level(target_level)
end
end
end