Class: Hyrax::Forms::WorkflowActionForm

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Translation
Includes:
ActiveModel::Validations
Defined in:
app/forms/hyrax/forms/workflow_action_form.rb

Overview

Responsible for processing that the :current_ability (and associated current_user) has taken a Sipity::WorkflowAction on an object that has a Sipity::Entity.

The form enforces that the action taken is valid.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(current_ability:, work:, attributes: {}) ⇒ WorkflowActionForm

Returns a new instance of WorkflowActionForm.


19
20
21
22
23
24
25
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 19

def initialize(current_ability:, work:, attributes: {})
  @current_ability = current_ability
  @work = work
  @name = attributes.fetch(:name, false)
  @comment = attributes.fetch(:comment, nil)
  convert_to_sipity_objects!
end

Instance Attribute Details

#commentObject (readonly)

Returns the value of attribute comment


27
28
29
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 27

def comment
  @comment
end

#current_abilityObject (readonly)

Returns the value of attribute current_ability


27
28
29
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 27

def current_ability
  @current_ability
end

#nameObject (readonly)

Returns the value of attribute name


27
28
29
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 27

def name
  @name
end

#workObject (readonly)

Returns the value of attribute work


27
28
29
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 27

def work
  @work
end

Instance Method Details

#authorized_for_processingObject


40
41
42
43
44
45
46
47
48
49
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 40

def authorized_for_processing
  return false if name.blank? # name is the action which converts to sipity_workflow_action
  return true if Hyrax::Workflow::PermissionQuery.authorized_for_processing?(
    user: subject.user,
    entity: subject.entity,
    action: sipity_workflow_action
  )
  errors.add(:base, :unauthorized)
  false
end

#saveObject


29
30
31
32
33
34
35
# File 'app/forms/hyrax/forms/workflow_action_form.rb', line 29

def save
  return false unless valid?
  Workflow::WorkflowActionService.run(subject: subject,
                                      action: sipity_workflow_action,
                                      comment: comment)
  true
end