acl9 0.12.3 → 1.0.0

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.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +21 -7
  3. data/.travis.yml +19 -0
  4. data/Appraisals +8 -0
  5. data/CONTRIBUTING.md +58 -0
  6. data/Gemfile +2 -0
  7. data/Gemfile.lock +88 -32
  8. data/LICENSE +9 -0
  9. data/README.md +156 -0
  10. data/Rakefile +6 -3
  11. data/acl9.gemspec +10 -13
  12. data/gemfiles/rails_4.0.gemfile +8 -0
  13. data/gemfiles/rails_4.1.gemfile +8 -0
  14. data/lib/acl9/model_extensions/for_subject.rb +5 -1
  15. data/lib/acl9/model_extensions.rb +3 -24
  16. data/lib/acl9/version.rb +1 -1
  17. data/lib/acl9.rb +1 -1
  18. data/test/controller_extensions/actions_test.rb +167 -0
  19. data/test/controller_extensions/anon_test.rb +39 -0
  20. data/test/controller_extensions/base.rb +96 -0
  21. data/test/controller_extensions/basics_test.rb +44 -0
  22. data/test/controller_extensions/conditions_test.rb +48 -0
  23. data/test/controller_extensions/method_test.rb +50 -0
  24. data/test/controller_extensions/multi_match_test.rb +142 -0
  25. data/test/controller_extensions/multiple_role_arguments_test.rb +135 -0
  26. data/test/controller_extensions/prepositions_test.rb +99 -0
  27. data/test/controller_extensions/pseudo_role_test.rb +26 -0
  28. data/test/controller_extensions/role_test.rb +75 -0
  29. data/test/controllers/acl_action_override_test.rb +24 -0
  30. data/test/controllers/acl_arguments_test.rb +5 -0
  31. data/test/controllers/acl_block_test.rb +5 -0
  32. data/test/controllers/acl_boolean_method_test.rb +5 -0
  33. data/test/controllers/acl_helper_method_test.rb +26 -0
  34. data/test/controllers/acl_ivars_test.rb +15 -0
  35. data/test/controllers/acl_method2_test.rb +6 -0
  36. data/test/controllers/acl_method_test.rb +6 -0
  37. data/test/controllers/acl_object_hash_test.rb +18 -0
  38. data/test/controllers/acl_query_method_named_test.rb +9 -0
  39. data/test/controllers/acl_query_method_test.rb +9 -0
  40. data/test/controllers/acl_query_method_with_lambda_test.rb +9 -0
  41. data/test/controllers/acl_query_mixin.rb +51 -0
  42. data/test/controllers/acl_subject_method_test.rb +15 -0
  43. data/test/controllers/arguments_checking_test.rb +43 -0
  44. data/test/dummy/app/controllers/acl_action_override.rb +15 -0
  45. data/test/dummy/app/controllers/acl_arguments.rb +10 -0
  46. data/test/dummy/app/controllers/acl_block.rb +6 -0
  47. data/test/dummy/app/controllers/acl_boolean_method.rb +23 -0
  48. data/test/dummy/app/controllers/acl_helper_method.rb +11 -0
  49. data/test/dummy/app/controllers/acl_ivars.rb +17 -0
  50. data/test/dummy/app/controllers/acl_method.rb +6 -0
  51. data/test/dummy/app/controllers/acl_method2.rb +6 -0
  52. data/test/dummy/app/controllers/acl_objects_hash.rb +10 -0
  53. data/test/dummy/app/controllers/acl_query_method.rb +9 -0
  54. data/test/dummy/app/controllers/acl_query_method_named.rb +13 -0
  55. data/test/dummy/app/controllers/acl_query_method_with_lambda.rb +9 -0
  56. data/test/dummy/app/controllers/acl_subject_method.rb +16 -0
  57. data/test/dummy/app/controllers/application_controller.rb +7 -0
  58. data/test/dummy/app/controllers/empty_controller.rb +5 -0
  59. data/test/dummy/app/helpers/application_helper.rb +2 -0
  60. data/test/dummy/app/helpers/some_helper.rb +8 -0
  61. data/test/dummy/app/models/.keep +0 -0
  62. data/test/dummy/app/models/access.rb +3 -0
  63. data/test/dummy/app/models/account.rb +3 -0
  64. data/test/dummy/app/models/bar.rb +3 -0
  65. data/test/dummy/app/models/concerns/.keep +0 -0
  66. data/test/dummy/app/models/foo.rb +3 -0
  67. data/test/dummy/app/models/foo_bar.rb +3 -0
  68. data/test/dummy/app/models/other/foo.rb +5 -0
  69. data/test/dummy/app/models/other/role.rb +5 -0
  70. data/test/dummy/app/models/other/user.rb +5 -0
  71. data/test/dummy/app/models/role.rb +3 -0
  72. data/test/dummy/app/models/user.rb +3 -0
  73. data/test/dummy/app/models/uuid.rb +4 -0
  74. data/test/dummy/config/application.rb +23 -0
  75. data/test/dummy/config/boot.rb +4 -0
  76. data/test/dummy/config/database.yml +25 -0
  77. data/test/dummy/config/environment.rb +5 -0
  78. data/test/dummy/config/environments/development.rb +37 -0
  79. data/test/dummy/config/environments/production.rb +78 -0
  80. data/test/dummy/config/environments/test.rb +39 -0
  81. data/test/dummy/config/initializers/assets.rb +8 -0
  82. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  83. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  84. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  85. data/test/dummy/config/initializers/inflections.rb +16 -0
  86. data/test/dummy/config/initializers/mime_types.rb +4 -0
  87. data/test/dummy/config/initializers/secrets.rb +1 -0
  88. data/test/dummy/config/initializers/session_store.rb +3 -0
  89. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  90. data/test/dummy/config/locales/en.yml +23 -0
  91. data/test/dummy/config/routes.rb +3 -0
  92. data/test/dummy/config.ru +4 -0
  93. data/test/dummy/db/migrate/20141117132218_create_tables.rb +102 -0
  94. data/test/helpers/helper_test.rb +89 -0
  95. data/test/models/roles_test.rb +251 -0
  96. data/test/models/roles_with_custom_association_names_test.rb +28 -0
  97. data/test/models/roles_with_custom_class_names_test.rb +28 -0
  98. data/test/models/system_roles_test.rb +16 -0
  99. data/test/models/users_roles_and_subjects_with_namespaced_class_names_test.rb +30 -0
  100. data/test/test_helper.rb +76 -23
  101. data/test/version_test.rb +2 -2
  102. metadata +190 -74
  103. data/README.textile +0 -921
  104. data/VERSION.yml +0 -5
  105. data/init.rb +0 -1
  106. data/test/access_control_test.rb +0 -338
  107. data/test/dsl_base_test.rb +0 -795
  108. data/test/helpers_test.rb +0 -133
  109. data/test/roles_test.rb +0 -370
  110. data/test/support/controllers.rb +0 -207
  111. data/test/support/models.rb +0 -59
  112. data/test/support/schema.rb +0 -93
data/test/helpers_test.rb DELETED
@@ -1,133 +0,0 @@
1
- require 'test_helper'
2
-
3
- require File.join(File.dirname(__FILE__), '..', 'lib', 'acl9')
4
-
5
- module SomeHelper
6
- include Acl9Helpers
7
-
8
- access_control :the_question do
9
- allow :hamlet, :to => :be
10
- allow :hamlet, :except => :be
11
- end
12
- end
13
-
14
- class HelperTest < Test::Unit::TestCase
15
- module Hamlet
16
- def current_user
17
- user = Object.new
18
-
19
- class <<user
20
- def has_role?(role, object=nil)
21
- if object
22
- return (role == 'hamlet' && object.name == 'castle')
23
- else
24
- return role == 'hamlet'
25
- end
26
- end
27
- end
28
-
29
- user
30
- end
31
- end
32
-
33
- module NotLoggedIn
34
- def current_user; nil end
35
- end
36
-
37
- module Noone
38
- def current_user
39
- user = Object.new
40
-
41
- class <<user
42
- def has_role?(*_); false end
43
- end
44
-
45
- user
46
- end
47
- end
48
-
49
- class Base
50
- include SomeHelper
51
-
52
- attr_accessor :action_name
53
- def controller
54
- self
55
- end
56
- end
57
-
58
- class Klass1 < Base
59
- include Hamlet
60
- end
61
-
62
- class Klass2 < Base
63
- include NotLoggedIn
64
- end
65
-
66
- class Klass3 < Base
67
- include Noone
68
- end
69
-
70
- it "has :the_question method" do
71
- Base.new.should respond_to(:the_question)
72
- end
73
-
74
- it "role :hamlet is allowed to be" do
75
- k = Klass1.new
76
- k.action_name = 'be'
77
- k.the_question.should be_true
78
- end
79
-
80
- it "role :hamlet is allowed to not_be" do
81
- k = Klass1.new
82
- k.action_name = 'not_be'
83
- k.the_question.should be_true
84
- end
85
-
86
- it "not logged in is not allowed to be" do
87
- k = Klass2.new
88
- k.action_name = 'be'
89
- k.the_question.should == false
90
- end
91
-
92
- it "noone is not allowed to be" do
93
- k = Klass3.new
94
- k.action_name = 'be'
95
- k.the_question.should == false
96
- end
97
-
98
- it "has :show_to method" do
99
- Base.new.should respond_to(:show_to)
100
- end
101
-
102
- it "has :show_to hamlet 'hello hamlet' message" do
103
- k = Klass1.new
104
- message = 'hello hamlet'
105
- k.show_to('hamlet') { message }.should == message
106
- end
107
-
108
- it "has to show message if user has hamlet role on object" do
109
- k = Klass1.new
110
- message = 'hello hamlet'
111
-
112
- obj = Object.new
113
- def obj.name; 'castle'; end
114
-
115
- k.show_to('hamlet', :of => obj) { message }.should == message
116
- end
117
-
118
- it "has not to show message if user has no hamlet role on object" do
119
- k = Klass1.new
120
-
121
- obj = Object.new
122
- def obj.name; 'persia'; end
123
-
124
- k.show_to('hamlet', :of => obj) { 'hello my prince' }.should == nil
125
- end
126
-
127
- it "has :show_to nothing to NotLoggedIn" do
128
- k = Klass2.new
129
- k.action_name = 'be'
130
- message = 'hello hamlet'
131
- k.show_to(:hamlet) { message }.should == nil
132
- end
133
- end
data/test/roles_test.rb DELETED
@@ -1,370 +0,0 @@
1
- require 'test_helper'
2
- require File.join(File.dirname(__FILE__), '..', 'lib', 'acl9')
3
- require 'support/models'
4
-
5
- #Logger = ActiveRecord::Base.logger
6
- load 'support/schema.rb'
7
-
8
-
9
- class SystemRolesTest < Test::Unit::TestCase
10
- it "should not delete a system role" do
11
- Role.destroy_all
12
- @role=Role.create(:name=>"admin", :system=>true)
13
- @role.system.should be_true
14
- Role.count.should==1
15
- @user = User.create!
16
- @user.has_role!(:admin)
17
- Role.count.should==1
18
- @user.has_no_role!(:admin)
19
- Role.count.should==1
20
- end
21
- end
22
-
23
- class RolesTest < Test::Unit::TestCase
24
- before do
25
- Role.destroy_all
26
- [User, Foo, Bar].each { |model| model.delete_all }
27
-
28
- @user = User.create!
29
- @user2 = User.create!
30
- @foo = Foo.create!
31
- @bar = Bar.create!
32
- #create authorized object that has a string primary key
33
- @uuid = Uuid.new
34
- @uuid.uuid = "C41642EE-2780-0001-189F-17F3101B26E0"
35
- @uuid.save
36
- end
37
-
38
- it "should not have any roles by default" do
39
- %w(user manager admin owner).each do |role|
40
- @user.has_role?(role).should be_false
41
- end
42
- end
43
-
44
- it "#has_role! without object (global role)" do
45
- lambda do
46
- @user.has_role!('admin')
47
- end.should change { Role.count }.from(0).to(1)
48
-
49
- @user.has_role?('admin').should be_true
50
- @user2.has_role?('admin').should be_false
51
- end
52
-
53
- it "should not count global role as object role" do
54
- @user.has_role!('admin')
55
-
56
- [@foo, @bar, Foo, Bar, @user].each do |obj|
57
- @user.has_role?('admin', obj).should be_false
58
- @user.has_roles_for?(obj).should be_false
59
- @user.roles_for(obj).should == []
60
- end
61
-
62
- [@foo, @bar].each do |obj|
63
- obj.accepts_role?('admin', @user).should be_false
64
- end
65
- end
66
-
67
- it "#has_role! with object (object role)" do
68
- @user.has_role!('manager', @foo)
69
-
70
- @user.has_role?('manager', @foo).should be_true
71
- @user.has_roles_for?(@foo).should be_true
72
- @user.has_role_for?(@foo).should be_true
73
-
74
- roles = @user.roles_for(@foo)
75
- roles.should == @foo.accepted_roles_by(@user)
76
- roles.size.should == 1
77
- roles.first.name.should == "manager"
78
-
79
- @user.has_role?('manager', @bar).should be_false
80
- @user2.has_role?('manager', @foo).should be_false
81
-
82
- @foo.accepts_role?('manager', @user).should be_true
83
- @foo.accepts_role_by?(@user).should be_true
84
- @foo.accepts_roles_by?(@user).should be_true
85
- end
86
-
87
- it "should count object role also as global role" do
88
- @user.has_role!('manager', @foo)
89
-
90
- @user.has_role?('manager').should be_true
91
- end
92
-
93
- it "should not count object role as object class role" do
94
- @user.has_role!('manager', @foo)
95
- @user.has_role?('manager', Foo).should be_false
96
- end
97
-
98
- context "protect_global_roles is true" do
99
- before do
100
- @saved_option = Acl9.config[:protect_global_roles]
101
- Acl9.config[:protect_global_roles] = true
102
- end
103
-
104
- it "should not count object role also as global role" do
105
- @user.has_role!('manager', @foo)
106
-
107
- @user.has_role?('manager').should be_false
108
- end
109
-
110
- after do
111
- Acl9.config[:protect_global_roles] = @saved_option
112
- end
113
- end
114
-
115
- it "#has_role! with class" do
116
- @user.has_role!('user', Bar)
117
-
118
- @user.has_role?('user', Bar).should be_true
119
- @user.has_roles_for?(Bar).should be_true
120
- @user.has_role_for?(Bar).should be_true
121
-
122
- roles = @user.roles_for(Bar)
123
- roles.size.should == 1
124
- roles.first.name.should == "user"
125
-
126
- @user.has_role?('user', Foo).should be_false
127
- @user2.has_role?('user', Bar).should be_false
128
- end
129
-
130
- it "should not count class role as object role" do
131
- @user.has_role!('manager', Foo)
132
- @user.has_role?('manager', @foo).should be_false
133
- end
134
-
135
- it "should be able to have several roles on the same object" do
136
- @user.has_role!('manager', @foo)
137
- @user.has_role!('user', @foo)
138
- @user.has_role!('admin', @foo)
139
-
140
- @user.has_role!('owner', @bar)
141
-
142
- @user.roles_for(@foo) .map(&:name).sort.should == %w(admin manager user)
143
- @foo.accepted_roles_by(@user).map(&:name).sort.should == %w(admin manager user)
144
- end
145
-
146
- it "should reuse existing roles" do
147
- @user.has_role!('owner', @bar)
148
- @user2.has_role!('owner', @bar)
149
-
150
- @user.role_objects.should == @user2.role_objects
151
- end
152
-
153
- it "#has_no_role! should unassign a global role from user" do
154
- set_some_roles
155
-
156
- lambda do
157
- @user.has_no_role!('3133t')
158
- end.should change { @user.role_objects.count }.by(-1)
159
-
160
- @user.has_role?('3133t').should be_false
161
- end
162
-
163
- it "#has_no_role! should unassign an object role from user" do
164
- set_some_roles
165
-
166
- lambda do
167
- @user.has_no_role!('manager', @foo)
168
- end.should change { @user.role_objects.count }.by(-1)
169
-
170
- @user.has_role?('manager', @foo).should be_false
171
- @user.has_role?('user', @foo).should be_true # another role on the same object
172
- end
173
-
174
- it "#has_no_role! should unassign a class role from user" do
175
- set_some_roles
176
-
177
- lambda do
178
- @user.has_no_role!('admin', Foo)
179
- end.should change { @user.role_objects.count }.by(-1)
180
-
181
- @user.has_role?('admin', Foo).should be_false
182
- @user.has_role?('admin').should be_true # global role
183
- end
184
-
185
- it "#has_no_roles_for! should unassign global and class roles with nil object" do
186
- set_some_roles
187
-
188
- lambda do
189
- @user.has_no_roles_for!
190
- end.should change { @user.role_objects.count }.by(-4)
191
-
192
- @user.has_role?('admin').should be_false
193
- @user.has_role?('3133t').should be_false
194
- @user.has_role?('admin', Foo).should be_false
195
- @user.has_role?('manager', Foo).should be_false
196
- end
197
-
198
- it "#has_no_roles_for! should unassign object roles" do
199
- set_some_roles
200
-
201
- lambda do
202
- @user.has_no_roles_for! @foo
203
- end.should change { @user.role_objects.count }.by(-2)
204
-
205
- @user.has_role?('user', @foo).should be_false
206
- @user.has_role?('manager', @foo).should be_false
207
- end
208
-
209
- it "#has_no_roles_for! should unassign both class roles and object roles for objects of that class" do
210
- set_some_roles
211
-
212
- lambda do
213
- @user.has_no_roles_for! Foo
214
- end.should change { @user.role_objects.count }.by(-4)
215
-
216
- @user.has_role?('admin', Foo).should be_false
217
- @user.has_role?('manager', Foo).should be_false
218
- @user.has_role?('user', @foo).should be_false
219
- @user.has_role?('manager', @foo).should be_false
220
- end
221
-
222
- it "#has_no_roles! should unassign all roles" do
223
- set_some_roles
224
-
225
- @user.has_no_roles!
226
- @user.role_objects.count.should == 0
227
- end
228
-
229
- it "should delete unused roles from table" do
230
- @user.has_role!('owner', @bar)
231
- @user2.has_role!('owner', @bar)
232
-
233
- Role.count.should == 1
234
-
235
- @bar.accepts_no_role!('owner', @user2)
236
- Role.count.should == 1
237
-
238
- @bar.accepts_no_role!('owner', @user)
239
-
240
- Role.count.should == 0
241
- end
242
-
243
- it "should be able to get users that have a role on a authorized object" do
244
- @user.has_role!('owner', @bar)
245
- @user2.has_role!('owner', @bar)
246
-
247
- @bar.users.count.should == 2
248
- end
249
-
250
- it "should be able to get users that have a role on a authorized object with text primary key" do
251
- @user.has_role!('owner', @uuid)
252
- @user2.has_role!('owner', @uuid)
253
-
254
- @uuid.users.count.should == 2
255
- end
256
-
257
- it "should accept :symbols as role names" do
258
- @user.has_role! :admin
259
- @user.has_role! :_3133t
260
-
261
- @user.has_role! :admin, Foo
262
- @user.has_role! :manager, Foo
263
- @user.has_role! :user, @foo
264
- @foo.accepts_role! :manager, @user
265
- @bar.accepts_role! :owner, @user
266
-
267
- @user.has_role?(:admin).should be_true
268
- @user.has_role?(:_3133t).should be_true
269
- @user.has_role?(:admin, Foo).should be_true
270
- @user.has_role?(:manager, @foo).should be_true
271
- end
272
-
273
- private
274
-
275
- def set_some_roles
276
- @user.has_role!('admin')
277
- @user.has_role!('3133t')
278
-
279
- @user.has_role!('admin', Foo)
280
- @user.has_role!('manager', Foo)
281
- @user.has_role!('user', @foo)
282
- @foo.accepts_role!('manager', @user)
283
- @bar.accepts_role!('owner', @user)
284
- end
285
- end
286
-
287
-
288
- class RolesWithCustomClassNamesTest < Test::Unit::TestCase
289
- before do
290
- AnotherRole.destroy_all
291
- [AnotherSubject, FooBar].each { |model| model.delete_all }
292
-
293
- @subj = AnotherSubject.create!
294
- @subj2 = AnotherSubject.create!
295
- @foobar = FooBar.create!
296
- end
297
-
298
- it "should basically work" do
299
- lambda do
300
- @subj.has_role!('admin')
301
- @subj.has_role!('user', @foobar)
302
- end.should change { AnotherRole.count }.from(0).to(2)
303
-
304
- @subj.has_role?('admin').should be_true
305
- @subj2.has_role?('admin').should be_false
306
-
307
- @subj.has_role?(:user, @foobar).should be_true
308
- @subj2.has_role?(:user, @foobar).should be_false
309
-
310
- @subj.has_no_roles!
311
- @subj2.has_no_roles!
312
- end
313
- end
314
-
315
- class RolesWithCustomAssociationNamesTest < Test::Unit::TestCase
316
- before do
317
- DifferentAssociationNameRole.destroy_all
318
- [DifferentAssociationNameSubject, FooBar].each { |model| model.delete_all }
319
-
320
- @subj = DifferentAssociationNameSubject.create!
321
- @subj2 = DifferentAssociationNameSubject.create!
322
- @foobar = FooBar.create!
323
- end
324
-
325
- it "should basically work" do
326
- lambda do
327
- @subj.has_role!('admin')
328
- @subj.has_role!('user', @foobar)
329
- end.should change { DifferentAssociationNameRole.count }.from(0).to(2)
330
-
331
- @subj.has_role?('admin').should be_true
332
- @subj2.has_role?('admin').should be_false
333
-
334
- @subj.has_role?(:user, @foobar).should be_true
335
- @subj2.has_role?(:user, @foobar).should be_false
336
-
337
- @subj.has_no_roles!
338
- @subj2.has_no_roles!
339
- end
340
- end
341
-
342
- class UsersRolesAndSubjectsWithNamespacedClassNamesTest < Test::Unit::TestCase
343
- before do
344
- Other::Role.destroy_all
345
- [Other::User, Other::FooBar].each { |model| model.delete_all }
346
-
347
- @user = Other::User.create!
348
- @user2 = Other::User.create!
349
- @foobar = Other::FooBar.create!
350
-
351
- end
352
-
353
- it "should basically work" do
354
- lambda do
355
- @user.has_role!('admin')
356
- @user.has_role!('user', @foobar)
357
- end.should change { Other::Role.count }.from(0).to(2)
358
-
359
- @user.has_role?('admin').should be_true
360
- @user2.has_role?('admin').should be_false
361
-
362
- @user.has_role?(:user, @foobar).should be_true
363
- @user2.has_role?(:user, @foobar).should be_false
364
-
365
- @foobar.accepted_roles.count.should == 1
366
-
367
- @user.has_no_roles!
368
- @user2.has_no_roles!
369
- end
370
- end
@@ -1,207 +0,0 @@
1
- class ApplicationController < ActionController::Base
2
- rescue_from Acl9::AccessDenied do |e|
3
- render :text => 'AccessDenied'
4
- end
5
- end
6
-
7
- class EmptyController < ApplicationController
8
- attr_accessor :current_user
9
- before_filter :set_current_user
10
-
11
- [:index, :show, :new, :edit, :update, :delete, :destroy].each do |act|
12
- define_method(act) { render :text => 'OK' }
13
- end
14
-
15
- private
16
-
17
- def set_current_user
18
- if params[:user]
19
- self.current_user = params[:user]
20
- end
21
- end
22
- end
23
-
24
- module TrueFalse
25
- private
26
-
27
- def true_meth; true end
28
- def false_meth; false end
29
- end
30
-
31
- # all these controllers behave the same way
32
-
33
- class ACLBlock < EmptyController
34
- access_control :debug => true do
35
- allow all, :to => [:index, :show]
36
- allow :admin
37
- end
38
- end
39
-
40
- class ACLMethod < EmptyController
41
- access_control :as_method => :acl do
42
- allow all, :to => [:index, :show]
43
- allow :admin, :except => [:index, :show]
44
- end
45
- end
46
-
47
- class ACLMethod2 < EmptyController
48
- access_control :acl do
49
- allow all, :to => [:index, :show]
50
- allow :admin, :except => [:index, :show]
51
- end
52
- end
53
-
54
- class ACLArguments < EmptyController
55
- access_control :except => [:index, :show] do
56
- allow :admin, :if => :true_meth, :unless => :false_meth
57
- end
58
-
59
- include TrueFalse
60
- end
61
-
62
- class ACLBooleanMethod < EmptyController
63
- access_control :acl, :filter => false do
64
- allow all, :to => [:index, :show], :if => :true_meth
65
- allow :admin, :unless => :false_meth
66
- allow all, :if => :false_meth
67
- allow all, :unless => :true_meth
68
- end
69
-
70
- before_filter :check_acl
71
-
72
- def check_acl
73
- if self.acl
74
- true
75
- else
76
- raise Acl9::AccessDenied
77
- end
78
- end
79
-
80
- include TrueFalse
81
- end
82
-
83
- ###########################################
84
- class MyDearFoo
85
- include Singleton
86
- end
87
-
88
- class ACLIvars < EmptyController
89
- class VenerableBar; end
90
-
91
- before_filter :set_ivars
92
-
93
- access_control do
94
- action :destroy do
95
- allow :owner, :of => :foo
96
- allow :bartender, :at => VenerableBar
97
- end
98
- end
99
-
100
- private
101
-
102
- def set_ivars
103
- @foo = MyDearFoo.instance
104
- end
105
- end
106
-
107
- class ACLSubjectMethod < ApplicationController
108
- access_control :subject_method => :the_only_user do
109
- allow :the_only_one
110
- end
111
-
112
- def index
113
- render :text => 'OK'
114
- end
115
-
116
- private
117
-
118
- def the_only_user
119
- params[:user]
120
- end
121
- end
122
-
123
- class ACLObjectsHash < ApplicationController
124
- access_control :allowed?, :filter => false do
125
- allow :owner, :of => :foo
126
- end
127
-
128
- def allow
129
- @foo = nil
130
- render :text => (allowed?(:foo => MyDearFoo.instance) ? 'OK' : 'AccessDenied')
131
- end
132
-
133
- def current_user
134
- params[:user]
135
- end
136
- end
137
-
138
- class ACLActionOverride < ApplicationController
139
- access_control :allowed?, :filter => false do
140
- allow all, :to => :index
141
- deny all, :to => :show
142
- allow :owner, :of => :foo, :to => :edit
143
- end
144
-
145
- def check_allow
146
- render :text => (allowed?(params[:_action]) ? 'OK' : 'AccessDenied')
147
- end
148
-
149
- def check_allow_with_foo
150
- render :text => (allowed?(params[:_action], :foo => MyDearFoo.instance) ? 'OK' : 'AccessDenied')
151
- end
152
-
153
- def current_user
154
- params[:user]
155
- end
156
- end
157
-
158
-
159
- class ACLHelperMethod < ApplicationController
160
- access_control :helper => :foo? do
161
- allow :owner, :of => :foo
162
- end
163
-
164
- def allow
165
- @foo = MyDearFoo.instance
166
-
167
- render :inline => "<%= foo? ? 'OK' : 'AccessDenied' %>"
168
- end
169
-
170
- def current_user
171
- params[:user]
172
- end
173
- end
174
-
175
- class ACLQueryMethod < ApplicationController
176
- attr_accessor :current_user
177
-
178
- access_control :acl, :query_method => true do
179
- allow :editor, :to => [:edit, :update, :destroy]
180
- allow :viewer, :to => [:index, :show]
181
- allow :owner, :of => :foo, :to => :fooize
182
- end
183
- end
184
-
185
- class ACLQueryMethodWithLambda < ApplicationController
186
- attr_accessor :current_user
187
-
188
- access_control :query_method => :acl? do
189
- allow :editor, :to => [:edit, :update, :destroy]
190
- allow :viewer, :to => [:index, :show]
191
- allow :owner, :of => :foo, :to => :fooize
192
- end
193
- end
194
-
195
- class ACLNamedQueryMethod < ApplicationController
196
- attr_accessor :current_user
197
-
198
- access_control :acl, :query_method => 'allow_ay' do
199
- allow :editor, :to => [:edit, :update, :destroy]
200
- allow :viewer, :to => [:index, :show]
201
- allow :owner, :of => :foo, :to => :fooize
202
- end
203
-
204
- def acl?(*args)
205
- allow_ay(*args)
206
- end
207
- end