summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/ability.rb6
1 files changed, 4 insertions, 2 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 890417e780d..652c6001e08 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -225,13 +225,15 @@ class Ability
[:issue, :note, :project_snippet, :personal_snippet, :merge_request].each do |name|
define_method "#{name}_abilities" do |user, subject|
- if subject.author == user
- [
+ if subject.author == user || user.is_admin?
+ rules = [
:"read_#{name}",
:"write_#{name}",
:"modify_#{name}",
:"admin_#{name}"
]
+ rules.push(:change_visibility_level) if subject.is_a?(Snippet)
+ rules
elsif subject.respond_to?(:assignee) && subject.assignee == user
[
:"read_#{name}",