Sha256: 3699c293ad45a2fa71062aa872a8735e2059987573249058d1e519fe0bc30aa1
Contents?: true
Size: 997 Bytes
Versions: 3
Compression:
Stored size: 997 Bytes
Contents
module Ddr module Auth class RoleBasedAbilityDefinitions < AbilityDefinitions def call Permissions::ALL.each do |permission| can permission, [ Ddr::Resource, ::SolrDocument, String ] do |obj| has_permission? permission, obj end end end private def has_permission?(permission, object_or_id) permissions(object_or_id).include? permission end 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 def cached_permissions(pid, &block) cache[pid] ||= block.call end end end end
Version data entries
3 entries across 3 versions & 1 rubygems