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