diff options
author | Achilleas Pipinellis <axilleas@axilleas.me> | 2015-12-25 01:31:02 +0200 |
---|---|---|
committer | Achilleas Pipinellis <axilleas@axilleas.me> | 2015-12-25 01:31:02 +0200 |
commit | d18fd3f6489ad2a8065f8ddd80ca51100eb50b5e (patch) | |
tree | 1e809b9c4f694e20e9cc7dff06a9cb7f2f56aef2 /app/services/projects/update_service.rb | |
parent | e74affcfa84acaddc236d6dfed7be1a61470dc0e (diff) | |
parent | 350d65503f0fa34ae397942578c5ea8b2a46a629 (diff) | |
download | gitlab-ce-ci_triggers_docs.tar.gz |
Merge branch 'master' into ci_triggers_docsci_triggers_docs
Diffstat (limited to 'app/services/projects/update_service.rb')
-rw-r--r-- | app/services/projects/update_service.rb | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb index 69bdd045ddf..895e089bea3 100644 --- a/app/services/projects/update_service.rb +++ b/app/services/projects/update_service.rb @@ -3,12 +3,16 @@ module Projects def execute # check that user is allowed to set specified visibility_level new_visibility = params[:visibility_level] - if new_visibility && new_visibility.to_i != project.visibility_level - unless can?(current_user, :change_visibility_level, project) && - Gitlab::VisibilityLevel.allowed_for?(current_user, new_visibility) - deny_visibility_level(project, new_visibility) - return project + if new_visibility + if new_visibility.to_i != project.visibility_level + unless can?(current_user, :change_visibility_level, project) && + Gitlab::VisibilityLevel.allowed_for?(current_user, new_visibility) + deny_visibility_level(project, new_visibility) + return project + end end + + return false unless visibility_level_allowed?(new_visibility) end new_branch = params[:default_branch] @@ -23,5 +27,19 @@ module Projects end end end + + private + + def visibility_level_allowed?(level) + return true if project.visibility_level_allowed?(level) + + level_name = Gitlab::VisibilityLevel.level_name(level) + project.errors.add( + :visibility_level, + "#{level_name} could not be set as visibility level of this project - parent project settings are more restrictive" + ) + + false + end end end |