summaryrefslogtreecommitdiff
path: root/app/services/projects/update_service.rb
diff options
context:
space:
mode:
authorTomasz Maczukin <tomasz@maczukin.pl>2015-11-03 18:23:48 +0100
committerTomasz Maczukin <tomasz@maczukin.pl>2015-11-03 18:23:48 +0100
commit7cb442eed4f488e378b3f20008ebe6ed3b53d31d (patch)
treebe041e92cb432b4623f5ebd215836022fedc0bbb /app/services/projects/update_service.rb
parent9e1db139eb1387fa9658ed68592d93eca61efb6b (diff)
downloadgitlab-ce-7cb442eed4f488e378b3f20008ebe6ed3b53d31d.tar.gz
Fix Project update service
When project is updated and it is a fork, then visibility_level should not be less restrictive than in its parent project.
Diffstat (limited to 'app/services/projects/update_service.rb')
-rw-r--r--app/services/projects/update_service.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb
index 69bdd045ddf..0a42f3e02aa 100644
--- a/app/services/projects/update_service.rb
+++ b/app/services/projects/update_service.rb
@@ -11,6 +11,15 @@ module Projects
end
end
+ unless project.visibility_level_allowed?(new_visibility)
+ level_name = Gitlab::VisibilityLevel.level_name(new_visibility)
+ project.errors.add(
+ :visibility_level,
+ "#{level_name} could not be set as visibility level of this project - parent project settings are more restrictive"
+ )
+ return false
+ end
+
new_branch = params[:default_branch]
if project.repository.exists? && new_branch && new_branch != project.default_branch