Module: ErpTechSvcs::Extensions::ActiveRecord::ProtectedByCapabilities::InstanceMethods

Defined in:
lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb

Instance Method Summary collapse

Instance Method Details

#add_capability(capability_type_iid) ⇒ Object



175
176
177
178
179
180
181
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 175

def add_capability(capability_type_iid)
  capability_type = convert_capability_type(capability_type_iid)
  scope_type = ScopeType.find_by_internal_identifier('instance')
  capability = Capability.find_or_create_by_capability_resource_type_and_capability_resource_id_and_capability_type_id_and_scope_type_id(get_superclass, self.id, capability_type.id, scope_type.id)
  self.reload
  capability
end

#allow_access?(user, capability_type_iid) ⇒ Boolean

Returns:

  • (Boolean)


202
203
204
205
206
207
208
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 202

def allow_access?(user, capability_type_iid)
  if (!self.protect_all_instances and !self.protected_with_capability?(capability_type_iid.to_s)) or (user and user.has_capability?(capability_type_iid.to_s, self))
    return true
  else
    return false
  end
end

#get_capability(capability_type_iid) ⇒ Object



193
194
195
196
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 193

def get_capability(capability_type_iid)
  capability_type = convert_capability_type(capability_type_iid)
  capabilities.where(:capability_type_id => capability_type.id).first
end

#protect_all_instancesObject

convenience method to access class method



171
172
173
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 171

def protect_all_instances
  self.class.protect_all_instances
end

#protect_with_capability(capability_type_iid) ⇒ Object



189
190
191
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 189

def protect_with_capability(capability_type_iid)
  add_capability(capability_type_iid)
end

#protected_with_capabilities?Boolean

Returns:

  • (Boolean)


221
222
223
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 221

def protected_with_capabilities?
  !capabilities.empty?
end

#protected_with_capability?(capability_type_iid) ⇒ Boolean

Returns:

  • (Boolean)


198
199
200
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 198

def protected_with_capability?(capability_type_iid)
  !get_capability(capability_type_iid).nil? or protect_all_instances
end

#remove_capability(capability_type_iid) ⇒ Object



210
211
212
213
214
215
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 210

def remove_capability(capability_type_iid)
  capability = get_capability(capability_type_iid)
  capability.destroy unless capability.nil?
  self.reload
  capability
end

#rolesObject



183
184
185
186
187
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 183

def roles
  SecurityRole.joins(:capability_accessors => :capability).
    where(:capabilities => {:capability_resource_type => get_superclass}).
    where(:capabilities => {:capability_resource_id => self.id})
end

#unprotect_with_capability(capability_type_iid) ⇒ Object



217
218
219
# File 'lib/erp_tech_svcs/extensions/active_record/protected_with_capabilities.rb', line 217

def unprotect_with_capability(capability_type_iid)
  remove_capability(capability_type_iid)
end