Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhttp://jneen.net/ <jneen@jneen.net>2016-08-17 02:29:19 +0300
committerhttp://jneen.net/ <jneen@jneen.net>2016-08-24 03:59:38 +0300
commiteadb8a80a509b6fd1b47237e8bb9f6111c666930 (patch)
tree72fa47ba3923b5c1d1bbefdd13ff08a0c11446d5
parent1a3c1ca8e8f3a7b0f66c77c0819a843a49a8568c (diff)
factor in global permissions
-rw-r--r--app/policies/base_policy.rb4
-rw-r--r--app/policies/global_policy.rb7
2 files changed, 9 insertions, 2 deletions
diff --git a/app/policies/base_policy.rb b/app/policies/base_policy.rb
index 12f60d8f76e..5a5b99c81c8 100644
--- a/app/policies/base_policy.rb
+++ b/app/policies/base_policy.rb
@@ -4,6 +4,8 @@ class BasePolicy
end
def self.class_for(subject)
+ return GlobalPolicy if subject.nil?
+
subject.class.ancestors.each do |klass|
next unless klass.name
@@ -59,8 +61,6 @@ class BasePolicy
private
def collect_rules(&b)
- return Set.new if @subject.nil?
-
@can = Set.new
@cannot = Set.new
yield
diff --git a/app/policies/global_policy.rb b/app/policies/global_policy.rb
new file mode 100644
index 00000000000..94a2906444a
--- /dev/null
+++ b/app/policies/global_policy.rb
@@ -0,0 +1,7 @@
+class GlobalPolicy < BasePolicy
+ def rules
+ return unless @user
+ can! :create_group if @user.can_create_group
+ can! :read_users_list
+ end
+end