diff options
author | http://jneen.net/ <jneen@jneen.net> | 2016-08-17 02:29:19 +0300 |
---|---|---|
committer | http://jneen.net/ <jneen@jneen.net> | 2016-08-24 03:59:38 +0300 |
commit | eadb8a80a509b6fd1b47237e8bb9f6111c666930 (patch) | |
tree | 72fa47ba3923b5c1d1bbefdd13ff08a0c11446d5 | |
parent | 1a3c1ca8e8f3a7b0f66c77c0819a843a49a8568c (diff) |
factor in global permissions
-rw-r--r-- | app/policies/base_policy.rb | 4 | ||||
-rw-r--r-- | app/policies/global_policy.rb | 7 |
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 |