summaryrefslogtreecommitdiff
path: root/app/services/projects/base_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/projects/base_service.rb')
-rw-r--r--app/services/projects/base_service.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/app/services/projects/base_service.rb b/app/services/projects/base_service.rb
new file mode 100644
index 00000000000..2a683e0d40a
--- /dev/null
+++ b/app/services/projects/base_service.rb
@@ -0,0 +1,18 @@
+module Projects
+ class BaseService < ::BaseService
+ # Add an error to the project for restricted visibility levels
+ def deny_visibility_level(project, denied_visibility_level = nil)
+ denied_visibility_level ||= project.visibility_level
+
+ level_name = 'Unknown'
+ Gitlab::VisibilityLevel.options.each do |name, level|
+ level_name = name if level == denied_visibility_level
+ end
+
+ project.errors.add(
+ :visibility_level,
+ "#{level_name} visibility has been restricted by your GitLab administrator"
+ )
+ end
+ end
+end