summaryrefslogtreecommitdiff
path: root/app/policies/base_policy.rb
diff options
context:
space:
mode:
authorhttp://jneen.net/ <jneen@jneen.net>2016-08-16 11:10:34 -0700
committerhttp://jneen.net/ <jneen@jneen.net>2016-08-30 11:39:22 -0700
commit4d904bf3521b4600db228c48214f3892e86ac72a (patch)
tree098b9c292e5b8ff1b1296a4a5aed20127124ec8f /app/policies/base_policy.rb
parent1ca9b3354a350b83d1e025b3d46280bc5bb60f2b (diff)
downloadgitlab-ce-4d904bf3521b4600db228c48214f3892e86ac72a.tar.gz
port issues to Issu{able,e}Policy
Diffstat (limited to 'app/policies/base_policy.rb')
-rw-r--r--app/policies/base_policy.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/app/policies/base_policy.rb b/app/policies/base_policy.rb
index 10ce38329c4..fd5d05a1bd1 100644
--- a/app/policies/base_policy.rb
+++ b/app/policies/base_policy.rb
@@ -3,6 +3,10 @@ class BasePolicy
new(user, subject).abilities
end
+ def self.class_for(subject)
+ "#{subject.class.name}Policy".constantize
+ end
+
attr_reader :user, :subject
def initialize(user, subject)
@user = user
@@ -18,8 +22,12 @@ class BasePolicy
collect_rules { anonymous_rules }
end
- def generate!
- raise 'abstract'
+ def anonymous_rules
+ rules
+ end
+
+ def delegate!(new_subject)
+ @can.merge(BasePolicy.class_for(new_subject).abilities(@user, new_subject))
end
def can!(*rules)