class Ddr::Auth::RoleBasedAbilityDefinitions

Public Instance Methods

call() click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 5
def call
  Permissions::ALL.each do |permission|
    can permission, [ Ddr::Resource, ::SolrDocument, String ] do |obj|
      has_permission? permission, obj
    end
  end
end

Private Instance Methods

cached_permissions(id, &block) click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 33
def cached_permissions(id, &block)
  cache[id] ||= block.call
end
has_permission?(permission, object_or_id) click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 15
def has_permission?(permission, object_or_id)
  permissions(object_or_id).include? permission
end
permissions(object_or_id) click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 19
def permissions(object_or_id)
  case object_or_id
  when Ddr::Resource, ::SolrDocument
    cached_permissions(object_or_id.id) do
      object_or_id.effective_permissions(agents)
    end
  when String
    cached_permissions(object_or_id) do
      doc = ::SolrDocument.find(object_or_id) # raises SolrDocument::NotFound
      doc.effective_permissions(agents)
    end
  end
end