module ErpTechSvcs::Extensions::ActiveRecord::ProtectedByCapabilities::SingletonMethods
Public Instance Methods
add_capability(capability_type_iid)
click to toggle source
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?”
# 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()
click to toggle source
class method to get all capabilities for this model
# File lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb, line 101 def all_capabilities capabilities end
capabilities()
click to toggle source
class method to get all capabilities for this model
# 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()
click to toggle source
return unique roles on capabilities for this model
# 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()
click to toggle source
class method to get only class capabilities for this model
# 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)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
class method to get only instance capabilities for this model
# 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)
click to toggle source
# 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()
click to toggle source
class method to get only query capabilities for this model
# 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)
click to toggle source
remove a class level capability
# 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)
click to toggle source
# 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)
click to toggle source
# 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