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::Models::Base, SolrDocument, String] do |obj| has_permission? permission, obj end end end
Private Instance Methods
cached_permissions(pid, &block)
click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 32 def cached_permissions(pid, &block) cache[pid] ||= block.call end
has_permission?(permission, obj)
click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 15 def has_permission?(permission, obj) permissions(obj).include? permission end
permissions(obj)
click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 19 def permissions(obj) case obj when Ddr::Models::Base, SolrDocument cached_permissions obj.id do obj.effective_permissions(agents) end when String cached_permissions obj do permissions_doc(obj).effective_permissions(agents) end end end
permissions_doc(pid)
click to toggle source
# File lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb, line 36 def permissions_doc(pid) roles_query_result = ActiveFedora::SolrService.query("id:\"#{pid}\"", rows: 1).first if roles_query_result.nil? raise "Solr document not found for PID \"#{pid}\"." end SolrDocument.new roles_query_result end