Module: ErpTechSvcs::Extensions::ActiveRecord::ProtectedByCapabilities::SingletonMethods
- Defined in:
- lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb
Instance Method Summary collapse
-
#add_capability(capability_type_iid) ⇒ Object
add a class level capability (capability_resource_id will be NULL) the purpose of this is primarily for actions like create where the record does not exist yet this will allow us to assign the create capability to a User or Role so that we can ask the question “can a user create a record for this model?”.
-
#all_capabilities ⇒ Object
class method to get all capabilities for this model.
-
#capabilities ⇒ Object
class method to get all capabilities for this model.
-
#capability_roles ⇒ Object
return unique roles on capabilities for this model.
-
#class_capabilities ⇒ Object
class method to get only class capabilities for this model.
- #convert_capability_type(type) ⇒ Object
- #get_capability(capability_type_iid) ⇒ Object
-
#instance_capabilities ⇒ Object
class method to get only instance capabilities for this model.
- #protect_with_capability(capability_type_iid) ⇒ Object
-
#query_capabilities ⇒ Object
class method to get only query capabilities for this model.
-
#remove_capability(capability_type_iid) ⇒ Object
remove a class level capability.
- #scope_capabilities(scope_type_iid) ⇒ Object
- #unprotect_with_capability(capability_type_iid) ⇒ Object
Instance Method Details
#add_capability(capability_type_iid) ⇒ Object
add a class level capability (capability_resource_id will be NULL) the purpose of this is primarily for actions like create where the record does not exist yet this will allow us to assign the create capability to a User or Role so that we can ask the question “can a user create a record for this model?”
133 134 135 136 137 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 133 def add_capability(capability_type_iid) capability_type = convert_capability_type(capability_type_iid) scope_type = ScopeType.find_by_internal_identifier('class') Capability.find_or_create_by_capability_resource_type_and_capability_type_id_and_scope_type_id(get_superclass(self.name), capability_type.id, scope_type.id) end |
#all_capabilities ⇒ Object
class method to get all capabilities for this model
101 102 103 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 101 def all_capabilities capabilities end |
#capabilities ⇒ Object
class method to get all capabilities for this model
96 97 98 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 96 def capabilities Capability.where('capability_resource_type = ?', get_superclass(self.name)) end |
#capability_roles ⇒ Object
return unique roles on capabilities for this model
126 127 128 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 126 def capability_roles SecurityRole.joins(:capability_accessors => :capability).where(:capability_accessors => {:capabilities => {:capability_resource_type => get_superclass(self.name) }}).all.uniq end |
#class_capabilities ⇒ Object
class method to get only class capabilities for this model
106 107 108 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 106 def class_capabilities scope_capabilities('class') end |
#convert_capability_type(type) ⇒ Object
159 160 161 162 163 164 165 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 159 def convert_capability_type(type) return type if type.is_a?(CapabilityType) return nil unless (type.is_a?(String) || type.is_a?(Symbol)) ct = CapabilityType.find_by_internal_identifier(type.to_s) return ct unless ct.nil? CapabilityType.create(:internal_identifier => type.to_s, :description => type.to_s.titleize) end |
#get_capability(capability_type_iid) ⇒ Object
143 144 145 146 147 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 143 def get_capability(capability_type_iid) capability_type = convert_capability_type(capability_type_iid) scope_type = ScopeType.find_by_internal_identifier('class') capabilities.where(:capability_resource_type => get_superclass(self.name), :capability_type_id => capability_type.id, :scope_type_id => scope_type.id).first end |
#instance_capabilities ⇒ Object
class method to get only instance capabilities for this model
116 117 118 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 116 def instance_capabilities scope_capabilities('instance') end |
#protect_with_capability(capability_type_iid) ⇒ Object
139 140 141 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 139 def protect_with_capability(capability_type_iid) add_capability(capability_type_iid) end |
#query_capabilities ⇒ Object
class method to get only query capabilities for this model
111 112 113 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 111 def query_capabilities scope_capabilities('query') end |
#remove_capability(capability_type_iid) ⇒ Object
remove a class level capability
150 151 152 153 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 150 def remove_capability(capability_type_iid) capability = get_capability(capability_type_iid) capability.destroy unless capability.nil? end |
#scope_capabilities(scope_type_iid) ⇒ Object
120 121 122 123 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 120 def scope_capabilities(scope_type_iid) scope_type = ScopeType.find_by_internal_identifier(scope_type_iid) capabilities.where(:scope_type_id => scope_type.id) end |
#unprotect_with_capability(capability_type_iid) ⇒ Object
155 156 157 |
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 155 def unprotect_with_capability(capability_type_iid) remove_capability(capability_type_iid) end |