diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-12-20 16:19:54 +0100 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-12-29 11:15:26 +0100 |
commit | 0618487906a8b44eea7cb858aff45a5d5ea4cfff (patch) | |
tree | c6620ca499bba21b35a513ff195260478bd31333 /app | |
parent | 723d788fbef90b270cce1ca1d4bc228c54041eaa (diff) | |
download | gitlab-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')
-rw-r--r-- | app/services/projects/fork_service.rb | 14 |
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 |