Module: UpdateVisibilityLevel

Included in:
Groups::UpdateService, Projects::UpdateService
Defined in:
app/services/concerns/update_visibility_level.rb

Instance Method Summary collapse

Instance Method Details

#valid_visibility_level_change?(target, new_visibility) ⇒ Boolean

check that user is allowed to set specified visibility_level

Returns:

  • (Boolean)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'app/services/concerns/update_visibility_level.rb', line 5

def valid_visibility_level_change?(target, new_visibility)
  return true unless new_visibility

  new_visibility_level = Gitlab::VisibilityLevel.level_value(new_visibility, fallback_value: nil)

  if new_visibility_level != target.visibility_level_value
    unless can?(current_user, :change_visibility_level, target) &&
        Gitlab::VisibilityLevel.allowed_for?(current_user, new_visibility_level)

      deny_visibility_level(target, new_visibility_level)
      return false
    end
  end

  true
end