diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-01-02 15:03:06 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-01-02 15:03:06 +0000 |
commit | 88e7378c8cab4160fe858d2483362d1575b43125 (patch) | |
tree | 1ac16f538a3153d11c9e3255f76a84fa18c7a50d /lib | |
parent | 3f44c4cedbbd9b72fdf28e83caaec345934e1d8d (diff) | |
parent | 0618487906a8b44eea7cb858aff45a5d5ea4cfff (diff) | |
download | gitlab-ce-88e7378c8cab4160fe858d2483362d1575b43125.tar.gz |
Merge branch 'bvl-fork-public-project-to-private-namespace' into 'master'
Forking a project to a namespace with lower visibility
Closes #40022
See merge request gitlab-org/gitlab-ce!16050
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/visibility_level.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/gitlab/visibility_level.rb b/lib/gitlab/visibility_level.rb index 11472ce6cce..6ced06a863d 100644 --- a/lib/gitlab/visibility_level.rb +++ b/lib/gitlab/visibility_level.rb @@ -57,11 +57,17 @@ module Gitlab } end - def highest_allowed_level + def allowed_levels restricted_levels = current_application_settings.restricted_visibility_levels - allowed_levels = self.values - restricted_levels - allowed_levels.max || PRIVATE + self.values - restricted_levels + end + + def closest_allowed_level(target_level) + highest_allowed_level = allowed_levels.select { |level| level <= target_level }.max + + # If all levels are restricted, fall back to PRIVATE + highest_allowed_level || PRIVATE end def allowed_for?(user, level) |