erp_tech_svcs 3.0.10 → 3.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/app/models/attribute_type.rb +1 -1
  2. data/app/models/capability.rb +54 -2
  3. data/app/models/capability_accessor.rb +4 -0
  4. data/app/models/extensions/party.rb +1 -0
  5. data/app/models/file_asset.rb +15 -5
  6. data/app/models/group.rb +149 -0
  7. data/app/models/scope_type.rb +5 -0
  8. data/app/models/security_role.rb +46 -0
  9. data/app/models/user.rb +99 -5
  10. data/db/data_migrations/20110109173616_create_capability_scope_types.rb +14 -0
  11. data/db/data_migrations/20121116155018_create_group_relationship_and_role_types.rb +19 -0
  12. data/db/data_migrations/20121130212146_note_capabilities.rb +23 -0
  13. data/db/migrate/20080805000010_base_tech_services.rb +44 -31
  14. data/db/migrate/20121116151510_create_groups.rb +18 -0
  15. data/db/migrate/20121126171612_upgrade_security.rb +53 -0
  16. data/db/migrate/20121126173506_upgrade_security2.rb +274 -0
  17. data/lib/erp_tech_svcs/engine.rb +7 -7
  18. data/lib/erp_tech_svcs/extensions/active_record/base.rb +17 -0
  19. data/lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb +131 -0
  20. data/lib/erp_tech_svcs/extensions/active_record/has_file_assets.rb +9 -1
  21. data/lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb +89 -0
  22. data/lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb +203 -0
  23. data/lib/erp_tech_svcs/extensions.rb +4 -2
  24. data/lib/erp_tech_svcs/file_support/manager.rb +1 -1
  25. data/lib/erp_tech_svcs/file_support/s3_manager.rb +3 -3
  26. data/lib/erp_tech_svcs/utils/compass_access_negotiator.rb +29 -24
  27. data/lib/erp_tech_svcs/version.rb +1 -1
  28. data/spec/lib/erp_tech_svcs/extensions/active_record/has_roles_spec.rb +4 -5
  29. data/spec/models/role_spec.rb +2 -2
  30. data/spec/models/secured_model_spec.rb +1 -1
  31. data/spec/models/user_spec.rb +2 -2
  32. metadata +137 -129
  33. data/app/models/capable_model.rb +0 -4
  34. data/app/models/role.rb +0 -17
  35. data/app/models/secured_model.rb +0 -15
  36. data/db/data_migrations/20120109173616_create_download_capability_type.rb +0 -13
  37. data/lib/erp_tech_svcs/extensions/active_record/has_capabilities.rb +0 -152
  38. data/lib/erp_tech_svcs/extensions/active_record/has_roles.rb +0 -130
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erp_tech_svcs
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.10
4
+ version: 3.0.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-10 00:00:00.000000000 Z
12
+ date: 2013-01-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: erp_base_erp_svcs
16
- requirement: &72970350 !ruby/object:Gem::Requirement
16
+ requirement: &70276214296840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *72970350
24
+ version_requirements: *70276214296840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: erp_dev_svcs
27
- requirement: &72970100 !ruby/object:Gem::Requirement
27
+ requirement: &70276214296320 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *72970100
35
+ version_requirements: *70276214296320
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: aws-sdk
38
- requirement: &72969870 !ruby/object:Gem::Requirement
38
+ requirement: &70276214295840 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.5.2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *72969870
46
+ version_requirements: *70276214295840
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: delayed_job_active_record
49
- requirement: &72969630 !ruby/object:Gem::Requirement
49
+ requirement: &70276214295380 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.3.2
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *72969630
57
+ version_requirements: *70276214295380
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: paperclip
60
- requirement: &72969400 !ruby/object:Gem::Requirement
60
+ requirement: &70276214294920 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - =
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 3.0.2
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *72969400
68
+ version_requirements: *70276214294920
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pdfkit
71
- requirement: &72969160 !ruby/object:Gem::Requirement
71
+ requirement: &70276214294460 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - =
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.4.6
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *72969160
79
+ version_requirements: *70276214294460
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: sorcery
82
- requirement: &72968920 !ruby/object:Gem::Requirement
82
+ requirement: &70276214293940 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - =
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: 0.7.12
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *72968920
90
+ version_requirements: *70276214293940
91
91
  description: This engine is implemented with the premise that services like logging,
92
92
  tracing and encryption would likely already exist in many organizations, so they
93
93
  are factored here so they can easily be re-implemented. There are default implementations
@@ -99,129 +99,137 @@ executables: []
99
99
  extensions: []
100
100
  extra_rdoc_files: []
101
101
  files:
102
- - app/assets/stylesheets/erp_tech_svcs/application.css
103
102
  - app/assets/javascripts/erp_tech_svcs/application.js
104
- - app/views/user_mailer/activation_needed_email.html.erb
105
- - app/views/user_mailer/reset_password_email.html.erb
106
- - app/views/layouts/erp_tech_svcs/application.html.erb
107
- - app/views/layouts/application.html.erb
108
- - app/validators/password_strength_validator.rb
109
- - app/models/capability.rb
103
+ - app/assets/stylesheets/erp_tech_svcs/application.css
104
+ - app/controllers/erp_tech_svcs/session_controller.rb
105
+ - app/controllers/erp_tech_svcs/user_controller.rb
106
+ - app/helpers/erp_tech_svcs/application_helper.rb
107
+ - app/mailers/user_mailer.rb
108
+ - app/models/attribute_type.rb
110
109
  - app/models/attribute_value.rb
111
- - app/models/file_asset.rb
112
- - app/models/role.rb
113
- - app/models/audit_log_item_type.rb
114
110
  - app/models/audit_log.rb
115
- - app/models/secured_model.rb
116
111
  - app/models/audit_log_item.rb
112
+ - app/models/audit_log_item_type.rb
117
113
  - app/models/audit_log_type.rb
118
- - app/models/user.rb
119
- - app/models/attribute_type.rb
120
- - app/models/capable_model.rb
114
+ - app/models/capability.rb
115
+ - app/models/capability_accessor.rb
121
116
  - app/models/capability_type.rb
122
117
  - app/models/encryption_key.rb
123
- - app/models/extensions/role_type.rb
124
- - app/models/extensions/party.rb
125
- - app/models/extensions/note_type.rb
126
118
  - app/models/extensions/contact_purpose.rb
127
119
  - app/models/extensions/contact_type.rb
128
- - app/models/extensions/relationship_type.rb
129
120
  - app/models/extensions/note.rb
130
- - app/mailers/user_mailer.rb
131
- - app/helpers/erp_tech_svcs/application_helper.rb
132
- - app/controllers/erp_tech_svcs/session_controller.rb
133
- - app/controllers/erp_tech_svcs/user_controller.rb
134
- - config/routes.rb
135
- - config/initializers/pdfkit.rb
121
+ - app/models/extensions/note_type.rb
122
+ - app/models/extensions/party.rb
123
+ - app/models/extensions/relationship_type.rb
124
+ - app/models/extensions/role_type.rb
125
+ - app/models/file_asset.rb
126
+ - app/models/group.rb
127
+ - app/models/scope_type.rb
128
+ - app/models/security_role.rb
129
+ - app/models/user.rb
130
+ - app/validators/password_strength_validator.rb
131
+ - app/views/layouts/application.html.erb
132
+ - app/views/layouts/erp_tech_svcs/application.html.erb
133
+ - app/views/user_mailer/activation_needed_email.html.erb
134
+ - app/views/user_mailer/reset_password_email.html.erb
136
135
  - config/initializers/erp_tech_svcs.rb
137
136
  - config/initializers/file_support.rb
137
+ - config/initializers/pdfkit.rb
138
138
  - config/initializers/sorcery.rb
139
+ - config/routes.rb
140
+ - db/data_migrations/20110109173616_create_capability_scope_types.rb
141
+ - db/data_migrations/20110802200222_schedule_delete_expired_sessions_job.rb
142
+ - db/data_migrations/20111111144706_setup_audit_log_types.rb
143
+ - db/data_migrations/20121116155018_create_group_relationship_and_role_types.rb
144
+ - db/data_migrations/20121130212146_note_capabilities.rb
145
+ - db/data_migrations/upgrade/20120727152144_set_image_dimensions_on_file_assets.rb
139
146
  - db/migrate/20080805000010_base_tech_services.rb
140
147
  - db/migrate/20111117183144_create_has_attribute_tables.rb
141
- - db/migrate/upgrade/20111109161551_update_user.rb
142
- - db/migrate/upgrade/20120725205131_add_image_dimension_columns_to_file_asset.rb
148
+ - db/migrate/20121116151510_create_groups.rb
149
+ - db/migrate/20121126171612_upgrade_security.rb
150
+ - db/migrate/20121126173506_upgrade_security2.rb
151
+ - db/migrate/upgrade/20111109161549_add_capabilites.rb
143
152
  - db/migrate/upgrade/20111109161550_update_roles.rb
144
- - db/migrate/upgrade/20120517203052_add_queue_to_delayed_jobs.rb
153
+ - db/migrate/upgrade/20111109161551_update_user.rb
145
154
  - db/migrate/upgrade/20120329161641_add_file_asset_indexes.rb
146
- - db/migrate/upgrade/20111109161549_add_capabilites.rb
147
- - db/data_migrations/20120109173616_create_download_capability_type.rb
148
- - db/data_migrations/upgrade/20120727152144_set_image_dimensions_on_file_assets.rb
149
- - db/data_migrations/20111111144706_setup_audit_log_types.rb
150
- - db/data_migrations/20110802200222_schedule_delete_expired_sessions_job.rb
151
- - lib/erp_tech_svcs/erp_tech_svcs_audit_log.rb
152
- - lib/erp_tech_svcs/engine.rb
155
+ - db/migrate/upgrade/20120517203052_add_queue_to_delayed_jobs.rb
156
+ - db/migrate/upgrade/20120725205131_add_image_dimension_columns_to_file_asset.rb
157
+ - lib/erp_tech_svcs/application_installer.rb
153
158
  - lib/erp_tech_svcs/config.rb
154
- - lib/erp_tech_svcs/file_support/paperclip_patch.rb
155
- - lib/erp_tech_svcs/file_support/railties/s3_resolver.rb
156
- - lib/erp_tech_svcs/file_support/file_system_manager.rb
159
+ - lib/erp_tech_svcs/engine.rb
160
+ - lib/erp_tech_svcs/erp_tech_svcs_audit_log.rb
161
+ - lib/erp_tech_svcs/extensions/active_record/acts_as_versioned.rb
162
+ - lib/erp_tech_svcs/extensions/active_record/base.rb
163
+ - lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb
164
+ - lib/erp_tech_svcs/extensions/active_record/has_file_assets.rb
165
+ - lib/erp_tech_svcs/extensions/active_record/has_relational_dynamic_attributes.rb
166
+ - lib/erp_tech_svcs/extensions/active_record/has_security_roles.rb
167
+ - lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb
168
+ - lib/erp_tech_svcs/extensions/sorcery/user_activation.rb
169
+ - lib/erp_tech_svcs/extensions.rb
157
170
  - lib/erp_tech_svcs/file_support/base.rb
158
171
  - lib/erp_tech_svcs/file_support/file_manipulator.rb
159
- - lib/erp_tech_svcs/file_support/s3_manager.rb
172
+ - lib/erp_tech_svcs/file_support/file_system_manager.rb
160
173
  - lib/erp_tech_svcs/file_support/manager.rb
161
- - lib/erp_tech_svcs/sms_wrapper/clickatell.rb
162
- - lib/erp_tech_svcs/sms_wrapper.rb
174
+ - lib/erp_tech_svcs/file_support/paperclip_patch.rb
175
+ - lib/erp_tech_svcs/file_support/railties/s3_resolver.rb
176
+ - lib/erp_tech_svcs/file_support/s3_manager.rb
163
177
  - lib/erp_tech_svcs/file_support.rb
164
- - lib/erp_tech_svcs/application_installer.rb
165
- - lib/erp_tech_svcs/sessions/delete_expired_sessions_service.rb
166
178
  - lib/erp_tech_svcs/sessions/delete_expired_sessions_job.rb
167
- - lib/erp_tech_svcs/utils/compass_pdf.rb
179
+ - lib/erp_tech_svcs/sessions/delete_expired_sessions_service.rb
180
+ - lib/erp_tech_svcs/sms_wrapper/clickatell.rb
181
+ - lib/erp_tech_svcs/sms_wrapper.rb
182
+ - lib/erp_tech_svcs/utils/attachment_fu_patch.rb
168
183
  - lib/erp_tech_svcs/utils/compass_access_negotiator.rb
184
+ - lib/erp_tech_svcs/utils/compass_logger.rb
185
+ - lib/erp_tech_svcs/utils/compass_pdf.rb
169
186
  - lib/erp_tech_svcs/utils/default_nested_set_methods.rb
170
- - lib/erp_tech_svcs/utils/attachment_fu_patch.rb
171
187
  - lib/erp_tech_svcs/utils/pdf_processor.rb
172
- - lib/erp_tech_svcs/utils/compass_logger.rb
173
- - lib/erp_tech_svcs/extensions.rb
174
- - lib/erp_tech_svcs/extensions/sorcery/user_activation.rb
175
- - lib/erp_tech_svcs/extensions/active_record/has_capabilities.rb
176
- - lib/erp_tech_svcs/extensions/active_record/acts_as_versioned.rb
177
- - lib/erp_tech_svcs/extensions/active_record/has_relational_dynamic_attributes.rb
178
- - lib/erp_tech_svcs/extensions/active_record/has_roles.rb
179
- - lib/erp_tech_svcs/extensions/active_record/has_file_assets.rb
180
188
  - lib/erp_tech_svcs/version.rb
181
189
  - lib/erp_tech_svcs.rb
182
190
  - lib/tasks/erp_tech_svcs_tasks.rake
183
191
  - GPL-3-LICENSE
184
192
  - Rakefile
185
193
  - README.md
186
- - spec/factories/role.rb
187
- - spec/factories/users.rb
188
- - spec/factories/capability_type.rb
189
- - spec/spec_helper.rb
190
- - spec/lib/erp_tech_svcs/extensions/active_record/has_roles_spec.rb
191
- - spec/lib/file_support/s3_manager_spec.rb
192
- - spec/lib/file_support/file_system_manager_spec.rb
193
- - spec/models/user_spec.rb
194
- - spec/models/audit_log_type_spec.rb
195
- - spec/models/secured_model_spec.rb
196
- - spec/models/file_asset_spec.rb
197
- - spec/models/audit_log_spec.rb
198
- - spec/models/role_spec.rb
199
- - spec/dummy/public/422.html
200
- - spec/dummy/public/404.html
201
- - spec/dummy/public/500.html
202
- - spec/dummy/public/favicon.ico
203
- - spec/dummy/config.ru
204
- - spec/dummy/app/assets/stylesheets/application.css
194
+ - spec/controllers/erp_tech_svcs/user_controller_spec.rb
205
195
  - spec/dummy/app/assets/javascripts/application.js
206
- - spec/dummy/app/views/layouts/application.html.erb
207
- - spec/dummy/app/helpers/application_helper.rb
196
+ - spec/dummy/app/assets/stylesheets/application.css
208
197
  - spec/dummy/app/controllers/application_controller.rb
209
- - spec/dummy/config/routes.rb
210
- - spec/dummy/config/locales/en.yml
211
- - spec/dummy/config/boot.rb
198
+ - spec/dummy/app/helpers/application_helper.rb
199
+ - spec/dummy/app/views/layouts/application.html.erb
212
200
  - spec/dummy/config/application.rb
201
+ - spec/dummy/config/boot.rb
202
+ - spec/dummy/config/database.yml
203
+ - spec/dummy/config/environment.rb
213
204
  - spec/dummy/config/environments/spec.rb
214
- - spec/dummy/config/initializers/mime_types.rb
215
- - spec/dummy/config/initializers/session_store.rb
216
205
  - spec/dummy/config/initializers/backtrace_silencers.rb
217
- - spec/dummy/config/initializers/wrap_parameters.rb
218
206
  - spec/dummy/config/initializers/inflections.rb
207
+ - spec/dummy/config/initializers/mime_types.rb
219
208
  - spec/dummy/config/initializers/secret_token.rb
220
- - spec/dummy/config/environment.rb
221
- - spec/dummy/config/database.yml
209
+ - spec/dummy/config/initializers/session_store.rb
210
+ - spec/dummy/config/initializers/wrap_parameters.rb
211
+ - spec/dummy/config/locales/en.yml
212
+ - spec/dummy/config/routes.rb
213
+ - spec/dummy/config.ru
214
+ - spec/dummy/public/404.html
215
+ - spec/dummy/public/422.html
216
+ - spec/dummy/public/500.html
217
+ - spec/dummy/public/favicon.ico
222
218
  - spec/dummy/Rakefile
223
219
  - spec/dummy/script/rails
224
- - spec/controllers/erp_tech_svcs/user_controller_spec.rb
220
+ - spec/factories/capability_type.rb
221
+ - spec/factories/role.rb
222
+ - spec/factories/users.rb
223
+ - spec/lib/erp_tech_svcs/extensions/active_record/has_roles_spec.rb
224
+ - spec/lib/file_support/file_system_manager_spec.rb
225
+ - spec/lib/file_support/s3_manager_spec.rb
226
+ - spec/models/audit_log_spec.rb
227
+ - spec/models/audit_log_type_spec.rb
228
+ - spec/models/file_asset_spec.rb
229
+ - spec/models/role_spec.rb
230
+ - spec/models/secured_model_spec.rb
231
+ - spec/models/user_spec.rb
232
+ - spec/spec_helper.rb
225
233
  homepage: http://development.compassagile.com
226
234
  licenses: []
227
235
  post_install_message:
@@ -242,49 +250,49 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
250
  version: '0'
243
251
  requirements: []
244
252
  rubyforge_project:
245
- rubygems_version: 1.8.10
253
+ rubygems_version: 1.8.11
246
254
  signing_key:
247
255
  specification_version: 3
248
256
  summary: This engine is implemented with the premise that services like logging, tracing
249
257
  and encryption would likely already exist in many organizations, so they are factored
250
258
  here so they can easily be re-implemented.
251
259
  test_files:
252
- - spec/factories/role.rb
253
- - spec/factories/users.rb
254
- - spec/factories/capability_type.rb
255
- - spec/spec_helper.rb
256
- - spec/lib/erp_tech_svcs/extensions/active_record/has_roles_spec.rb
257
- - spec/lib/file_support/s3_manager_spec.rb
258
- - spec/lib/file_support/file_system_manager_spec.rb
259
- - spec/models/user_spec.rb
260
- - spec/models/audit_log_type_spec.rb
261
- - spec/models/secured_model_spec.rb
262
- - spec/models/file_asset_spec.rb
263
- - spec/models/audit_log_spec.rb
264
- - spec/models/role_spec.rb
265
- - spec/dummy/public/422.html
266
- - spec/dummy/public/404.html
267
- - spec/dummy/public/500.html
268
- - spec/dummy/public/favicon.ico
269
- - spec/dummy/config.ru
270
- - spec/dummy/app/assets/stylesheets/application.css
260
+ - spec/controllers/erp_tech_svcs/user_controller_spec.rb
271
261
  - spec/dummy/app/assets/javascripts/application.js
272
- - spec/dummy/app/views/layouts/application.html.erb
273
- - spec/dummy/app/helpers/application_helper.rb
262
+ - spec/dummy/app/assets/stylesheets/application.css
274
263
  - spec/dummy/app/controllers/application_controller.rb
275
- - spec/dummy/config/routes.rb
276
- - spec/dummy/config/locales/en.yml
277
- - spec/dummy/config/boot.rb
264
+ - spec/dummy/app/helpers/application_helper.rb
265
+ - spec/dummy/app/views/layouts/application.html.erb
278
266
  - spec/dummy/config/application.rb
267
+ - spec/dummy/config/boot.rb
268
+ - spec/dummy/config/database.yml
269
+ - spec/dummy/config/environment.rb
279
270
  - spec/dummy/config/environments/spec.rb
280
- - spec/dummy/config/initializers/mime_types.rb
281
- - spec/dummy/config/initializers/session_store.rb
282
271
  - spec/dummy/config/initializers/backtrace_silencers.rb
283
- - spec/dummy/config/initializers/wrap_parameters.rb
284
272
  - spec/dummy/config/initializers/inflections.rb
273
+ - spec/dummy/config/initializers/mime_types.rb
285
274
  - spec/dummy/config/initializers/secret_token.rb
286
- - spec/dummy/config/environment.rb
287
- - spec/dummy/config/database.yml
275
+ - spec/dummy/config/initializers/session_store.rb
276
+ - spec/dummy/config/initializers/wrap_parameters.rb
277
+ - spec/dummy/config/locales/en.yml
278
+ - spec/dummy/config/routes.rb
279
+ - spec/dummy/config.ru
280
+ - spec/dummy/public/404.html
281
+ - spec/dummy/public/422.html
282
+ - spec/dummy/public/500.html
283
+ - spec/dummy/public/favicon.ico
288
284
  - spec/dummy/Rakefile
289
285
  - spec/dummy/script/rails
290
- - spec/controllers/erp_tech_svcs/user_controller_spec.rb
286
+ - spec/factories/capability_type.rb
287
+ - spec/factories/role.rb
288
+ - spec/factories/users.rb
289
+ - spec/lib/erp_tech_svcs/extensions/active_record/has_roles_spec.rb
290
+ - spec/lib/file_support/file_system_manager_spec.rb
291
+ - spec/lib/file_support/s3_manager_spec.rb
292
+ - spec/models/audit_log_spec.rb
293
+ - spec/models/audit_log_type_spec.rb
294
+ - spec/models/file_asset_spec.rb
295
+ - spec/models/role_spec.rb
296
+ - spec/models/secured_model_spec.rb
297
+ - spec/models/user_spec.rb
298
+ - spec/spec_helper.rb
@@ -1,4 +0,0 @@
1
- class CapableModel < ActiveRecord::Base
2
- belongs_to :capable_model_record, :polymorphic => true
3
- has_and_belongs_to_many :capabilities
4
- end
data/app/models/role.rb DELETED
@@ -1,17 +0,0 @@
1
- class Role < ActiveRecord::Base
2
- acts_as_erp_type
3
-
4
- has_and_belongs_to_many :secured_models
5
-
6
- validates :internal_identifier, :presence => {:message => 'Internal identifier cannot be blank'}
7
- validates :internal_identifier, :presence => {:message => 'Description cannot be blank'}
8
- validates_length_of :internal_identifier, :within => 3..100
9
- validates_uniqueness_of :internal_identifier, :case_sensitive => false
10
-
11
- def to_xml(options = {})
12
- default_only = []
13
- options[:only] = (options[:only] || []) + default_only
14
- super(options)
15
- end
16
-
17
- end
@@ -1,15 +0,0 @@
1
- class SecuredModel < ActiveRecord::Base
2
- belongs_to :secured_record, :polymorphic => true
3
- has_and_belongs_to_many :roles
4
-
5
- class << self
6
- def find_models_by_klass_and_role(model_klass, role)
7
- role = Role.iid(role) if role.is_a? String
8
- model_klass = model_klass.to_s unless model_klass.is_a? String
9
-
10
- SecuredModel.joins(['join roles_secured_models on roles_secured_models.secured_model_id = secured_models.id'])
11
- .where('secured_record_type = ? and role_id = ?', model_klass, role.id).collect(&:secured_record)
12
- end
13
- end
14
-
15
- end
@@ -1,13 +0,0 @@
1
- class CreateDownloadCapabilityType
2
-
3
- def self.up
4
- CapabilityType.create(:internal_identifier => 'download', :description => 'Download')
5
- Role.create(:description => 'File Downloader', :internal_identifier => 'file_downloader')
6
- end
7
-
8
- def self.down
9
- CapabilityType.where("internal_identifier = 'download'").first.destroy unless Role.where("internal_identifier = 'download'").first.nil?
10
- Role.where("internal_identifier = 'file_downloader'").first.destroy unless Role.where("internal_identifier = 'file_downloader'").first.nil?
11
- end
12
-
13
- end
@@ -1,152 +0,0 @@
1
- module ErpTechSvcs
2
- module Extensions
3
- module ActiveRecord
4
- module HasCapabilities
5
-
6
- def self.included(base)
7
- base.extend(ClassMethods)
8
- end
9
-
10
- module ClassMethods
11
-
12
- def has_capabilities
13
- extend HasCapabilities::SingletonMethods
14
- include HasCapabilities::InstanceMethods
15
-
16
- after_initialize :initialize_capable_model
17
- after_update :save_capable_model
18
- after_create :save_capable_model
19
- after_destroy :destroy_capable_model
20
-
21
- has_one :capable_model, :as => :capable_model_record
22
- has_many :capabilities, :through => :capable_model
23
-
24
- default_scope :include => :capabilities
25
- end
26
- end
27
-
28
- module SingletonMethods
29
- end
30
-
31
- module InstanceMethods
32
-
33
- def has_capabilities?
34
- !capabilities.empty?
35
- end
36
-
37
- def available_capability_resources
38
- capabilities.collect{|capability| capability.resource}.uniq
39
- end
40
-
41
- def capabilites_by_resource(resource)
42
- self.capabilities.where('resource = ?', resource)
43
- end
44
-
45
- def user_has_capability?(capability_type, resource, user)
46
- capability_type = convert_capability_type(capability_type)
47
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityTypeDoesNotExist if capability_type.nil?
48
-
49
- capability = find_capability(capability_type, resource)
50
- unless capability.nil?
51
- capability.has_access?(user)
52
- else
53
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityDoesNotExist
54
- end
55
- end
56
-
57
- def add_capability(capability_type, resource, *roles)
58
- capability_type = convert_capability_type(capability_type)
59
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityTypeDoesNotExist if capability_type.nil?
60
-
61
- capability = find_capability(capability_type, resource)
62
- if capability.nil?
63
- capability = Capability.create(:capability_type => capability_type, :resource => resource)
64
- capability.add_roles(roles)
65
- self.capable_model.capabilities << capability
66
- self.capable_model.save
67
- else
68
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityAlreadytExists
69
- end
70
-
71
- capability
72
- end
73
-
74
- def update_capability(capability_type, resource, *roles)
75
- capability_type = convert_capability_type(capability_type)
76
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityTypeDoesNotExist if capability_type.nil?
77
-
78
- capability = find_capability(capability_type, resource)
79
- unless capability.nil?
80
- capability.remove_all_roles
81
- capability.add_roles(roles)
82
- else
83
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityDoesNotExist
84
- end
85
- end
86
-
87
- def remove_all_capabilities
88
- self.capabilities.each do |capability|
89
- capability.destroy
90
- end
91
- end
92
-
93
- def remove_capability(capability_type, resource)
94
- capability_type = convert_capability_type(capability_type)
95
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityTypeDoesNotExist if capability_type.nil?
96
-
97
- capability = find_capability(capability_type, resource)
98
- unless capability.nil?
99
- capability.destroy
100
- else
101
- raise ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::CapabilityDoesNotExist
102
- end
103
- end
104
-
105
- def capabilites_to_hash
106
- self.capabilities.map do|capability|
107
- {
108
- :capability_type_iid => capability.type.internal_identifier,
109
- :resource => capability.resource,
110
- :roles => capability.roles.collect{|role| role.internal_identifier}
111
- }
112
- end
113
- end
114
-
115
- def initialize_capable_model
116
- # added new_record? because simply querying for a file_asset was causing a plethora of unnecessary queries for capable_model
117
- if self.new_record? and self.capable_model.nil?
118
- capable_model = CapableModel.new
119
- self.capable_model = capable_model
120
- capable_model.capable_model_record = self
121
- end
122
- end
123
-
124
- def save_capable_model
125
- capable_model.save
126
- end
127
-
128
- def destroy_capable_model
129
- if self.capable_model && !self.capable_model.frozen?
130
- self.capable_model.destroy
131
- end
132
- end
133
-
134
- private
135
-
136
- def convert_capability_type(type)
137
- CapabilityType.find_by_internal_identifier(type.to_s) if (type.is_a?(String) || type.is_a?(Symbol))
138
- end
139
-
140
- def find_capability(capability_type, resource)
141
- if resource.nil?
142
- self.capabilities.where('capability_type_id = ? and resource is null', capability_type.id).first
143
- else
144
- self.capabilities.where('capability_type_id = ? and resource = ?', capability_type.id, resource).first
145
- end
146
- end
147
-
148
- end
149
- end
150
- end
151
- end
152
- end