erp_tech_svcs 3.0.10 → 3.0.11

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 (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
@@ -1,130 +0,0 @@
1
- module ErpTechSvcs
2
- module Extensions
3
- module ActiveRecord
4
- module HasRoles
5
-
6
- module Errors
7
- exceptions = %w[UserDoesNotHaveAccess]
8
- exceptions.each { |e| const_set(e, Class.new(StandardError)) }
9
- end
10
-
11
- def self.included(base)
12
- base.extend(ClassMethods)
13
- end
14
-
15
- module ClassMethods
16
- def has_roles
17
- extend HasRoles::SingletonMethods
18
- include HasRoles::InstanceMethods
19
-
20
- after_initialize :initialize_secured_model
21
- after_update :save_secured_model
22
- after_create :save_secured_model
23
- after_destroy :destroy_secured_model
24
-
25
- has_one :secured_model, :as => :secured_record, :include => :roles
26
- end
27
- end
28
-
29
- module SingletonMethods
30
- end
31
-
32
- module InstanceMethods
33
- def roles
34
- self.secured_model.roles
35
- end
36
-
37
- def has_access?(user)
38
- has_access = true
39
- unless self.secured_model.roles.empty?
40
- has_access = if user.nil?
41
- false
42
- else
43
- user.has_role?(self.secured_model.roles.collect{|item| item.internal_identifier})
44
- end
45
- end
46
- has_access
47
- end
48
-
49
- def with_access(user, &block)
50
- if has_access?(user)
51
- yield
52
- else
53
- raise ErpTechSvcs::Extensions::ActiveRecord::HasRoles::UserDoesNotHaveAccess
54
- end
55
- end
56
-
57
- def add_role(role)
58
- role = role.is_a?(Role) ? role : Role.find_by_internal_identifier(role.to_s)
59
- unless self.has_role?(role)
60
- self.secured_model.roles << role
61
- self.secured_model.save
62
- self.reload
63
- end
64
- end
65
-
66
- def add_roles(*roles)
67
- roles.flatten!
68
- roles = roles[0] if roles[0].is_a? Array
69
- roles.each do |role|
70
- self.add_role(role)
71
- end
72
- end
73
-
74
- def remove_role(role)
75
- role = role.is_a?(Role) ? role : Role.find_by_internal_identifier(role.to_s)
76
- self.secured_model.roles.delete(role) if has_role?(role)
77
- end
78
-
79
- def remove_roles(*roles)
80
- roles.flatten!
81
- roles.each do |role|
82
- self.remove_role(role)
83
- self.reload
84
- end
85
- end
86
-
87
- def remove_all_roles
88
- self.roles.delete_all
89
- self.reload
90
- end
91
-
92
- def has_role?(*passed_roles)
93
- result = false
94
- passed_roles.flatten!
95
- passed_roles.each do |role|
96
- role_iid = role.is_a?(Role) ? role.internal_identifier : role.to_s
97
- self.roles.each do |this_role|
98
- result = true if (this_role.internal_identifier == role_iid)
99
- break if result
100
- end
101
- break if result
102
- end
103
- result
104
- end
105
-
106
- def initialize_secured_model
107
- if self.new_record? && self.secured_model.nil?
108
- secured_model = SecuredModel.new
109
- self.secured_model = secured_model
110
- secured_model.secured_record = self
111
- end
112
- end
113
-
114
- def save_secured_model
115
- secured_model.save
116
- end
117
-
118
- def destroy_secured_model
119
- if self.secured_model && !self.secured_model.frozen?
120
- self.secured_model.destroy
121
- end
122
- end
123
- end
124
-
125
- end #HasRoles
126
- end #ActiveRecord
127
- end #Extensions
128
- end #ErpTechSvcs
129
-
130
-