Sha256: 3bda09ffb61053924bebe2487befc8687fffbf884b53b81b9d850173393eccfe

Contents?: true

Size: 1.2 KB

Versions: 11

Compression:

Stored size: 1.2 KB

Contents

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

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

      ##
      # SearchBuilder mixin
      module SearchBuilder
        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 "-#{Spotlight::SolrDocument.visibility_field(current_exhibit)}:false"
        end

        def apply_exhibit_resources_filter(solr_params)
          return unless Spotlight::Engine.config.filter_resources_by_exhibit && 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
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
blacklight-spotlight-0.9.2 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.9.1 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.9.0 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.8.2 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.8.1 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.8.0 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.7.2 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.7.1 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.7.0 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.6.0 lib/spotlight/catalog/access_controls_enforcement.rb
blacklight-spotlight-0.5.0 lib/spotlight/catalog/access_controls_enforcement.rb