Sha256: a7320ed91b8f45e990d400ab47af7fd3a238e4a21b49c31354a8ada6940ae752

Contents?: true

Size: 1.1 KB

Versions: 16

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module Spotlight
  # Enforce exhibit visibility for index queries
  module AccessControlsEnforcementSearchBuilder
    extend ActiveSupport::Concern

    included do
      self.default_processor_chain += [:apply_permissive_visibility_filter, :apply_exhibit_resources_filter]
    end

    # Adds a filter that excludes resources that have been marked as not-visible
    def apply_permissive_visibility_filter(solr_params)
      return unless current_exhibit
      return if scope.respond_to?(:can?) && scope.can?(:curate, current_exhibit) && !blacklight_params[:public]

      solr_params.append_filter_query "-#{blacklight_config.document_model.visibility_field(current_exhibit)}:false"
    end

    def apply_exhibit_resources_filter(solr_params)
      return unless current_exhibit

      current_exhibit.solr_data.each do |facet_field, values|
        Array(values).each do |value|
          solr_params.append_filter_query send(:facet_value_to_fq_string, facet_field, value)
        end
      end
    end

    private

    def current_exhibit
      scope.current_exhibit
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
blacklight-spotlight-2.13.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.12.1 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.12.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.11.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.10.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.9.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.8.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.7.2 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.7.1 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.7.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.6.1.1 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.6.1 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.6.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.5.2 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.5.1 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb
blacklight-spotlight-2.5.0 app/models/concerns/spotlight/access_controls_enforcement_search_builder.rb