Sha256: ec164dee8a652b72c1b40a5b8368da758cf578dd7f3a7ce3223cb1a971206eba

Contents?: true

Size: 1.25 KB

Versions: 7

Compression:

Stored size: 1.25 KB

Contents

module Hyrax
  # Overrides FilterSuppressed filter to hide documents marked as
  # suppressed when the current user is permitted to take no workflow
  # actions for the work's current state
  #
  # Assumes presence of `blacklight_params[:id]` and a SolrDocument
  # corresponding to that `:id` value
  module FilterSuppressedWithRoles
    extend ActiveSupport::Concern
    include FilterSuppressed

    # Skip the filter if the current user is permitted to take
    # workflow actions on the work corresponding to the SolrDocument
    # with id = `blacklight_params[:id]`
    def only_active_works(solr_parameters)
      return if user_has_active_workflow_role? || depositor?
      super
    end

    private

      def current_work
        ::SolrDocument.find(blacklight_params[:id])
      end

      def user_has_active_workflow_role?
        Hyrax::Workflow::PermissionQuery.scope_permitted_workflow_actions_available_for_current_state(user: current_ability.current_user, entity: current_work).any?
      rescue PowerConverter::ConversionError
        # The current_work doesn't have a sipity workflow entity
        false
      end

      def depositor?
        current_work[DepositSearchBuilder.depositor_field].first == current_ability.current_user.user_key
      end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hyrax-2.1.0 app/search_builders/hyrax/filter_suppressed_with_roles.rb
hyrax-2.1.0.rc4 app/search_builders/hyrax/filter_suppressed_with_roles.rb
hyrax-2.1.0.rc3 app/search_builders/hyrax/filter_suppressed_with_roles.rb
hyrax-2.1.0.rc2 app/search_builders/hyrax/filter_suppressed_with_roles.rb
hyrax-2.1.0.rc1 app/search_builders/hyrax/filter_suppressed_with_roles.rb
hyrax-2.1.0.beta2 app/search_builders/hyrax/filter_suppressed_with_roles.rb
hyrax-2.1.0.beta1 app/search_builders/hyrax/filter_suppressed_with_roles.rb