module ErpTechSvcs::Extensions::ActiveRecord::HasCapabilityAccessors::InstanceMethods

Public Instance Methods

add_capabilities(_capabilities) click to toggle source

Add multiple capabilities

@param _capabilities [Array] Array of Capbilities

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 99
def add_capabilities(_capabilities)
  _capabilities.each do |capability|
    add_capability(capability)
  end
end
Also aliased as: grant_capabilities
add_capability(*capability) click to toggle source

pass in (capability_type_iid, klass) or (capability) object

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 108
def add_capability(*capability)
  capability_type_iid = capability.first.is_a?(Symbol) ? capability.first.to_s : capability.first
  capability = capability_type_iid.is_a?(String) ? get_or_create_capability(capability_type_iid, capability.second) : capability.first
  ca = CapabilityAccessor.find_or_create_by_capability_accessor_record_type_and_capability_accessor_record_id_and_capability_id(get_superclass, self.id, capability.id)
  self.reload
  ca
end
Also aliased as: grant_capability
all_capabilities() click to toggle source

method to get all capabilities for this model

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 57
def all_capabilities
  capabilities
end
capabilities() click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 46
def capabilities
  Capability.joins(:capability_type).joins(:capability_accessors).
    where(:capability_accessors => { :capability_accessor_record_type => self.class.name, :capability_accessor_record_id => self.id })
end
capabilities_not() click to toggle source

method to get capabilities this instance does NOT have

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 26
def capabilities_not
  Capability.joins(:capability_type).
    joins("LEFT JOIN capability_accessors ON capability_accessors.capability_id = capabilities.id AND capability_accessors.capability_accessor_record_type = '#{self.class.name}' AND capability_accessors.capability_accessor_record_id = #{self.id}").
    where("capability_accessors.id IS NULL")
end
class_capabilities() click to toggle source

method to get only class capabilities for this model

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 62
def class_capabilities
  scope_capabilities('class')
end
class_capabilities_not() click to toggle source

method to get only class capabilities this instance does NOT have

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 38
def class_capabilities_not
  scope_capabilities_not('class')
end
get_capability(capability_type_iid, klass) click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 86
def get_capability(capability_type_iid, klass)
  capability_type = convert_capability_type(capability_type_iid)
  scope_type = ScopeType.find_by_internal_identifier('class')
  Capability.find_by_capability_resource_type_and_capability_type_id_and_scope_type_id(klass, capability_type.id, scope_type.id)
end
get_or_create_capability(capability_type_iid, klass) click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 76
def get_or_create_capability(capability_type_iid, klass)
  capability_type = convert_capability_type(capability_type_iid)
  if klass.is_a?(String)
    scope_type = ScopeType.find_by_internal_identifier('class')
    Capability.find_or_create_by_capability_resource_type_and_capability_type_id_and_scope_type_id(klass, capability_type.id, scope_type.id)
  else
    klass.add_capability(capability_type_iid) # create instance capability
  end
end
grant_capabilities(_capabilities)
Alias for: add_capabilities
grant_capability(*capability)
Alias for: add_capability
has_capabilities?() click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 92
def has_capabilities?
  !capability_accessors.empty?
end
instance_capabilities() click to toggle source

method to get only instance capabilities for this model

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 72
def instance_capabilities
  scope_capabilities('instance')
end
query_capabilities() click to toggle source

method to get only query capabilities for this model

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 67
def query_capabilities
  scope_capabilities('query')
end
query_capabilities_not() click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 42
def query_capabilities_not
  scope_capabilities_not('query')
end
remove_all_capabilities() click to toggle source

Remove all current capabilities

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 143
def remove_all_capabilities
  capabilities.each do |capability|
    remove_capability(capability)
  end
end
Also aliased as: revoke_all_capabilities
remove_capabilities(_capabilities) click to toggle source

Remove multiple capabilities

@param _capabilities [Array] Array of Capbilities

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 133
def remove_capabilities(_capabilities)
  _capabilities.each do |capability|
    remove_capability(capability)
  end
end
Also aliased as: revoke_capabilities
remove_capability(*capability) click to toggle source

pass in (capability_type_iid, klass) or (capability) object

# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 119
def remove_capability(*capability)
  capability_type_iid = capability.first.is_a?(Symbol) ? capability.first.to_s : capability.first
  capability = capability_type_iid.is_a?(String) ? get_or_create_capability(capability_type_iid, capability.second) : capability.first
  ca = capability_accessors.where(:capability_accessor_record_type => get_superclass, :capability_accessor_record_id => self.id, :capability_id => capability.id).first
  ca.destroy unless ca.nil?
  self.reload
  ca
end
Also aliased as: revoke_capability
revoke_all_capabilities()
revoke_capabilities(_capabilities)
Alias for: remove_capabilities
revoke_capability(*capability)
Alias for: remove_capability
scope_capabilities(scope_type_iid) click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 51
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
scope_capabilities_not(scope_type_iid) click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 32
def scope_capabilities_not(scope_type_iid)
  scope_type = ScopeType.find_by_internal_identifier(scope_type_iid)
  capabilities_not.where(:scope_type_id => scope_type.id)
end

Private Instance Methods

convert_capability_type(type) click to toggle source
# File lib/erp_tech_svcs/extensions/active_record/has_capability_accessors.rb, line 153
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