declarative_authorization 0.5.4 → 0.5.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.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ ** RELEASE 0.5.5 (Jan 10, 2012)
2
+
3
+ * Update of handling of association proxies for Rails 3.2
4
+
1
5
  ** RELEASE 0.5.4 (Nov 30, 2011)
2
6
 
3
7
  * Cumulative loading of authorization rules [Damian Curso/sb]
@@ -60,6 +60,14 @@ module Authorization
60
60
  def self.default_role= (role)
61
61
  @@default_role = role.to_sym
62
62
  end
63
+
64
+ def self.is_a_association_proxy? (object)
65
+ if Rails.version < "3.2"
66
+ object.respond_to?(:proxy_reflection)
67
+ else
68
+ object.respond_to?(:proxy_association)
69
+ end
70
+ end
63
71
 
64
72
  # Authorization::Engine implements the reference monitor. It may be used
65
73
  # for querying the permission and retrieving obligations under which
@@ -155,7 +163,7 @@ module Authorization
155
163
  #
156
164
  # Example: permit!( :edit, :object => user.posts )
157
165
  #
158
- if options[:object].respond_to?( :proxy_reflection ) && options[:object].respond_to?( :new )
166
+ if Authorization.is_a_association_proxy?(options[:object]) && options[:object].respond_to?(:new)
159
167
  options[:object] = options[:object].new
160
168
  end
161
169
 
@@ -170,7 +170,7 @@ module Authorization
170
170
  context = object = nil
171
171
  if object_or_sym.nil?
172
172
  context = self.class.decl_auth_context
173
- elsif !object_or_sym.respond_to?(:proxy_reflection) and object_or_sym.is_a?(Symbol)
173
+ elsif !Authorization.is_a_association_proxy?(object_or_sym) and object_or_sym.is_a?(Symbol)
174
174
  context = object_or_sym
175
175
  else
176
176
  object = object_or_sym
@@ -140,9 +140,13 @@ module Authorization
140
140
  # Returns the model associated with the given path.
141
141
  def model_for (path)
142
142
  reflection = reflection_for(path)
143
-
144
- if reflection.respond_to?(:proxy_reflection)
145
- reflection.proxy_reflection.klass
143
+
144
+ if Authorization.is_a_association_proxy?(reflection)
145
+ if Rails.version < "3.2"
146
+ reflection.proxy_reflection.klass
147
+ else
148
+ reflection.proxy_association.reflection.klass
149
+ end
146
150
  elsif reflection.respond_to?(:klass)
147
151
  reflection.klass
148
152
  else
@@ -167,7 +171,7 @@ module Authorization
167
171
 
168
172
  reflection = path.empty? ? top_level_model : begin
169
173
  parent = reflection_for( path[0..-2] )
170
- if !parent.respond_to?(:proxy_reflection) and parent.respond_to?(:klass)
174
+ if !Authorization.is_a_association_proxy?(parent) and parent.respond_to?(:klass)
171
175
  parent.klass.reflect_on_association( path.last )
172
176
  else
173
177
  parent.reflect_on_association( path.last )
@@ -182,7 +186,7 @@ module Authorization
182
186
 
183
187
  # Claim alias for join table
184
188
  # TODO change how this is checked
185
- if !reflection.respond_to?(:proxy_reflection) and !reflection.respond_to?(:proxy_scope) and reflection.is_a?(ActiveRecord::Reflection::ThroughReflection)
189
+ if !Authorization.is_a_association_proxy?(reflection) and !reflection.respond_to?(:proxy_scope) and reflection.is_a?(ActiveRecord::Reflection::ThroughReflection)
186
190
  join_table_path = path[0..-2] + [reflection.options[:through]]
187
191
  reflection_for(join_table_path, true)
188
192
  end
@@ -88,7 +88,11 @@ class TestModelSecurityModel < ActiveRecord::Base
88
88
  using_access_control
89
89
  end
90
90
  class TestModelSecurityModelWithFind < ActiveRecord::Base
91
- set_table_name "test_model_security_models"
91
+ if Rails.version < "3.2"
92
+ set_table_name "test_model_security_models"
93
+ else
94
+ self.table_name = "test_model_security_models"
95
+ end
92
96
  has_many :test_attrs
93
97
  belongs_to :test_attr
94
98
  using_access_control :include_read => true,
@@ -209,6 +213,9 @@ class NamedScopeModelTest < Test::Unit::TestCase
209
213
  end
210
214
  }
211
215
  Authorization::Engine.instance(reader)
216
+ TestModel.delete_all
217
+ TestAttrThrough.delete_all
218
+ TestAttr.delete_all
212
219
 
213
220
  allowed_model = TestModel.create!
214
221
  allowed_model.test_attrs.create!(:attr => 1).test_attr_throughs.create!
@@ -383,6 +390,7 @@ class NamedScopeModelTest < Test::Unit::TestCase
383
390
  end
384
391
  }
385
392
  Authorization::Engine.instance(reader)
393
+ TestModel.delete_all
386
394
 
387
395
  test_model_1 = TestModel.create!
388
396
  TestModel.create!
@@ -911,6 +919,9 @@ class NamedScopeModelTest < Test::Unit::TestCase
911
919
  end
912
920
  }
913
921
  Authorization::Engine.instance(reader)
922
+ TestModel.delete_all
923
+ TestAttrThrough.delete_all
924
+ TestAttr.delete_all
914
925
 
915
926
  test_attr_through_1 = TestAttrThrough.create!
916
927
  test_item = NWayJoinItem.create!
@@ -1061,6 +1072,8 @@ class NamedScopeModelTest < Test::Unit::TestCase
1061
1072
  end
1062
1073
  }
1063
1074
  Authorization::Engine.instance(reader)
1075
+ TestModel.delete_all
1076
+ TestAttr.delete_all
1064
1077
 
1065
1078
  test_model_1 = TestModel.create!
1066
1079
  test_model_2 = TestModel.create!
@@ -1803,6 +1816,9 @@ class ModelTest < Test::Unit::TestCase
1803
1816
  end
1804
1817
  }
1805
1818
  Authorization::Engine.instance(reader)
1819
+ TestModel.delete_all
1820
+ TestAttr.delete_all
1821
+ TestAttrThrough.delete_all
1806
1822
 
1807
1823
  test_model_1 = TestModel.create! :content => 'test_1'
1808
1824
  test_model_2 = TestModel.create! :content => 'test_2'
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 4
9
- version: 0.5.4
8
+ - 5
9
+ version: 0.5.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Steffen Bartsch
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-11-30 00:00:00 +01:00
17
+ date: 2012-01-10 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies: []
20
20