module Dancan

Constants

VERSION

Public Class Methods

policy(user, record) click to toggle source
# File lib/dancan.rb, line 21
def policy(user, record)
  policy = PolicyFinder.new(record).policy
  policy.new(user, record) if policy
end
policy!(user, record) click to toggle source
# File lib/dancan.rb, line 26
def policy!(user, record)
  PolicyFinder.new(record).policy!.new(user, record)
end

Public Instance Methods

dancan_admin() click to toggle source
# File lib/dancan.rb, line 67
def dancan_admin
  current_admin
end
policies() click to toggle source
# File lib/dancan.rb, line 63
def policies
  @_dancan_policies ||= {}
end
policy(record) click to toggle source
# File lib/dancan.rb, line 59
def policy(record)
  policies[record] ||= Dancan.policy!(dancan_admin, record)
end
restrict_access(record, permitted_roles=nil) click to toggle source
# File lib/dancan.rb, line 44
def restrict_access(record, permitted_roles=nil)
  
  
  roles = permitted_roles
  policy = policy(record)
  unless roles.map().any? { |role| policy.public_send(role) }
    error = NotAuthorizedError.new("#{record} does not have not roles: #{roles.to_s}")
    error.roles, error.record, error.policy = roles.to_s, record, policy

    raise error
  end

  true
end