mirror of
https://github.com/varvet/pundit.git
synced 2022-11-09 12:30:11 -05:00
Merge pull request #59 from elabs/inject_policy
Allow policies and scopes to be injected into controllers.
This commit is contained in:
commit
ee6b1ed998
2 changed files with 18 additions and 2 deletions
|
@ -63,12 +63,14 @@ module Pundit
|
|||
|
||||
def policy_scope(scope)
|
||||
@_policy_scoped = true
|
||||
Pundit.policy_scope!(pundit_user, scope)
|
||||
@policy_scope or Pundit.policy_scope!(pundit_user, scope)
|
||||
end
|
||||
attr_writer :policy_scope
|
||||
|
||||
def policy(record)
|
||||
Pundit.policy!(pundit_user, record)
|
||||
@policy or Pundit.policy!(pundit_user, record)
|
||||
end
|
||||
attr_writer :policy
|
||||
|
||||
def pundit_user
|
||||
current_user
|
||||
|
|
|
@ -242,6 +242,13 @@ describe Pundit do
|
|||
it "throws an exception if the given policy can't be found" do
|
||||
expect { controller.policy(article) }.to raise_error(Pundit::NotDefinedError)
|
||||
end
|
||||
|
||||
it "allows policy to be injected" do
|
||||
new_policy = OpenStruct.new
|
||||
controller.policy = new_policy
|
||||
|
||||
controller.policy(post).should == new_policy
|
||||
end
|
||||
end
|
||||
|
||||
describe ".policy_scope" do
|
||||
|
@ -252,5 +259,12 @@ describe Pundit do
|
|||
it "throws an exception if the given policy can't be found" do
|
||||
expect { controller.policy_scope(Article) }.to raise_error(Pundit::NotDefinedError)
|
||||
end
|
||||
|
||||
it "allows policy_scope to be injected" do
|
||||
new_scope = OpenStruct.new
|
||||
controller.policy_scope = new_scope
|
||||
|
||||
controller.policy_scope(post).should == new_scope
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue