Class: Symphonia::Role

Inherits:
ApplicationRecord show all
Includes:
ModelAttributes
Defined in:
app/models/symphonia/role.rb

Instance Method Summary collapse

Methods inherited from ApplicationRecord

#to_s

Instance Method Details

#allowed_permissionsObject



32
33
34
35
36
37
38
39
40
# File 'app/models/symphonia/role.rb', line 32

def allowed_permissions
  return @allowed_permissions if @allowed_permissions

  @allowed_permissions = permissions.collect do |i|
    i.is_a?(Symphonia::Permissions::Permission) ? i : Symphonia::Permissions.get(i.to_sym)
  end.compact

  @allowed_permissions
end

#allowed_to?(permission) ⇒ Boolean

after_save :expire_cache

Returns:

  • (Boolean)


20
21
22
23
24
# File 'app/models/symphonia/role.rb', line 20

def allowed_to?(permission)
  Rails.cache.fetch([self, permission]) do
    !allowed_permissions.detect { |i| permission.to_sym == i.name }.nil?
  end
end

#authorize?(controller, action) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
29
30
# File 'app/models/symphonia/role.rb', line 26

def authorize?(controller, action)
  Rails.cache.fetch([self, controller, action]) do
    !allowed_permissions.detect { |p| p.allowed?(controller, action) }.nil?
  end
end

#permission_namesObject



42
43
44
# File 'app/models/symphonia/role.rb', line 42

def permission_names
  permissions #.map(&:name)
end