Sha256: 4e3b0f6e78f663ce459b29950b43c30ba2d2ecee06b14e357c28ecebea96a398
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
# frozen_string_literal: true module Hyrax class ChangeContentDepositorService # @param [ActiveFedora::Base, Valkyrie::Resource] work # @param [User] user # @param [TrueClass, FalseClass] reset def self.call(work, user, reset) case work when ActiveFedora::Base call_af(work, user, reset) when Valkyrie::Resource call_valkyrie(work, user, reset) end end def self.call_af(work, user, reset) work.proxy_depositor = work.depositor work.permissions = [] if reset work.apply_depositor_metadata(user) work.file_sets.each do |f| f.apply_depositor_metadata(user) f.save! end work.save! work end private_class_method :call_af def self.call_valkyrie(work, user, reset) if reset work.permission_manager.acl.permissions = [] work.permission_manager.acl.save end work.proxy_depositor = work.depositor apply_depositor_metadata(work, user) Hyrax.custom_queries.find_child_filesets(resource: work).each do |f| apply_depositor_metadata(f, user) end work end private_class_method :call_valkyrie def self.apply_depositor_metadata(resource, depositor) depositor_id = depositor.respond_to?(:user_key) ? depositor.user_key : depositor resource.depositor = depositor_id if resource.respond_to? :depositor Hyrax::AccessControlList.new(resource: resource).grant(:edit).to(::User.find_by_user_key(depositor_id)).save end private_class_method :apply_depositor_metadata end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hyrax-3.0.0.pre.rc3 | app/services/hyrax/change_content_depositor_service.rb |