Class: Renalware::YAMLPermissionConfiguration

Inherits:
Object
  • Object
show all
Defined in:
app/policies/renalware/yaml_permission_configuration.rb

Overview

Responsible for determining if a user has access to a model based on a configuration file.

Example

Based on the following configuration file in YAML format (e.g. config/permissions.yml):

super_admin:
  User
  Patient
admin:
  Admission
  DrugType

We can determine who has access to what models:

configuration = PolicyConfiguration.new(Patient)
configuration.has_privilege?(user) # => true

configuration.has_privilege?(admin_user) # => false

We can also determine if a model is restricted?

configuration = PolicyConfiguration.new(Patient)
configuration.restricted? # => true

configuration = PolicyConfiguration.new(Drug)
configuration.restricted? # => false

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model_class, filename = nil) ⇒ YAMLPermissionConfiguration

Returns a new instance of YAMLPermissionConfiguration.



34
35
36
37
# File 'app/policies/renalware/yaml_permission_configuration.rb', line 34

def initialize(model_class, filename = nil)
  @model_class = model_class
  @filename =  filename || default_filename
end

Instance Attribute Details

#filenameObject (readonly)

Returns the value of attribute filename.



39
40
41
# File 'app/policies/renalware/yaml_permission_configuration.rb', line 39

def filename
  @filename
end

#model_classObject (readonly)

Returns the value of attribute model_class.



39
40
41
# File 'app/policies/renalware/yaml_permission_configuration.rb', line 39

def model_class
  @model_class
end

Instance Method Details

#has_permission?(user) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'app/policies/renalware/yaml_permission_configuration.rb', line 45

def has_permission?(user)
  model_class.name.in? models_user_can_access(user)
end

#restricted?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'app/policies/renalware/yaml_permission_configuration.rb', line 41

def restricted?
  restricted_model_classes.include?(model_class.name)
end