access_policy 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c13ac5c6dac57c9f9941984ef3a3cdfb41ea0a2e
4
- data.tar.gz: 72b632f8163d91a4655bb8b9fdd4989402c76777
3
+ metadata.gz: feb81c43a683b9e8237ea9c967e2e23c7ff768a1
4
+ data.tar.gz: c8ec25b6998f7cc9c6ec47b5de509b3f3226a522
5
5
  SHA512:
6
- metadata.gz: 08b09203d8dfeda012749a7b6480ecbc594120cf16df57b92734f06eb8fbd5501a9429c5c836670bef0fd6a73e361b28482540c962b9a1aec6bd8986d287f029
7
- data.tar.gz: 12c95f04b081718da2b910b68d89942514862d59fdc44ad240c86f30d14273c9e28be567feb6915edf769d6ee9453ec68ecf29105cb7a6e47db17248443f8e34
6
+ metadata.gz: f2acab607775708c0bf8eb59df2d1282e6afb7718039804fee723b248e72f6e16cd0d6dcce8219f10c77b288ec71fdd3e26941e046cf272857789166f1856926
7
+ data.tar.gz: 6b7e3d5c100fd6d1a5090a8eaeda60cf1b8daaebbb632fe713b030db9f73ef68f8dad4dbccbb62bdefc35135d212d1953a0488af7012cb88d077baf141a7f66a
@@ -4,7 +4,7 @@ module AccessPolicy
4
4
  attr_accessor :current_user_or_role, :object_or_class, :query, :default_error_policy
5
5
 
6
6
  def initialize(current_user_or_role, object_or_class, query=nil, default_error_policy=->(*) { raise })
7
- raise NotDefinedError, 'unable to find policy class for anonymous classes' if class_to_guard(object_or_class).name.nil? || class_to_guard(object_or_class).name.length < 1
7
+ raise NotDefinedError, 'unable to find policy class for anonymous classes' unless policy_class_can_be_found_for?(object_or_class)
8
8
 
9
9
  self.current_user_or_role = current_user_or_role
10
10
  self.object_or_class = object_or_class
@@ -37,6 +37,11 @@ module AccessPolicy
37
37
 
38
38
  protected
39
39
 
40
+ def policy_class_can_be_found_for?(object_or_class)
41
+ subject = class_to_guard(object_or_class)
42
+ (!subject.name.nil? && subject.name.length > 0) || subject.respond_to?(:policy_class)
43
+ end
44
+
40
45
  def class_to_guard(obj_or_class=object_or_class)
41
46
  obj_or_class.is_a?(Class) ? obj_or_class : obj_or_class.class
42
47
  end
@@ -1,3 +1,3 @@
1
1
  module AccessPolicy
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/access_policy.rb CHANGED
@@ -44,7 +44,7 @@ module AccessPolicy
44
44
  module ClassMethods
45
45
 
46
46
  def policy_guarded_method(action_name, &block)
47
- unsafe_action_name = :"#{action_name}_unsafe"
47
+ unsafe_action_name = unsafe_action_name(action_name)
48
48
 
49
49
  define_method action_name do |*args|
50
50
  _authorize "#{action_name}?"
@@ -54,6 +54,10 @@ module AccessPolicy
54
54
  define_method unsafe_action_name, block
55
55
  end
56
56
 
57
+ def unsafe_action_name(action_name)
58
+ :"#{action_name}_unsafe"
59
+ end
60
+
57
61
  end
58
62
 
59
63
  end
@@ -54,6 +54,16 @@ module AccessPolicy
54
54
  it 'raises an error when class to guard has no name' do
55
55
  expect{AccessPolicy::PolicyEnforcer.new(current_user, Class.new.new, action, error_policy)}.to raise_error
56
56
  end
57
+
58
+ it 'raises no error when class to guard has no name but an policy class is defined' do
59
+ some_class = Class.new do
60
+ def self.policy_class
61
+ Class.new
62
+ end
63
+ end
64
+
65
+ expect { AccessPolicy::PolicyEnforcer.new(current_user, some_class.new, action, error_policy) }.not_to raise_error
66
+ end
57
67
  end
58
68
 
59
69
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: access_policy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dieter Späth