Module: Hyrax::Workflow::RevokeEditFromDepositor

Defined in:
app/services/hyrax/workflow/revoke_edit_from_depositor.rb

Overview

This is a built in function for workflow, so that a workflow action can be created that removes the creators the ability to alter it.

Class Method Summary collapse

Class Method Details

.call(target:) ⇒ Object


8
9
10
11
12
13
14
15
16
17
18
# File 'app/services/hyrax/workflow/revoke_edit_from_depositor.rb', line 8

def self.call(target:, **)
  return true unless target.try(:depositor)

  model = target.try(:model) || target # get the model if target is a ChangeSet
  model.edit_users = model.edit_users.to_a - Array.wrap(target.depositor)
  model.try(:permission_manager)&.acl&.save

  # If there are a lot of members, revoking access from each could take a
  # long time. Do this work in the background.
  RevokeEditFromMembersJob.perform_later(model, target.depositor)
end