lib/hydra/access_controls_enforcement.rb in hydra-access-controls-8.0.0 vs lib/hydra/access_controls_enforcement.rb in hydra-access-controls-8.1.0

- old
+ new

@@ -1,9 +1,10 @@ module Hydra::AccessControlsEnforcement extend ActiveSupport::Concern - included do + included do |klass| + attr_writer :current_ability class_attribute :solr_access_filters_logic # Set defaults. Each symbol identifies a _method_ that must be in # this class, taking one parameter (permission_types) # Can be changed in local apps or by plugins, eg: @@ -11,10 +12,14 @@ # CatalogController.solr_access_filters_logic += [:new_method] # CatalogController.solr_access_filters_logic.delete(:we_dont_want) self.solr_access_filters_logic = [:apply_group_permissions, :apply_user_permissions, :apply_superuser_permissions ] end + + def current_ability + @current_ability || raise("current_ability has not been set on #{self}") + end protected def gated_discovery_filters(permission_types = discovery_permissions, ability = current_ability) user_access_filters = [] @@ -57,19 +62,17 @@ # Set solr_parameters to enforce appropriate permissions # * Applies a lucene query to the solr :q parameter for gated discovery # * Uses public_qt search handler if user does not have "read" permissions # @param solr_parameters the current solr parameters - # @param user_parameters the current user-subitted parameters # - # @example This method should be added to your Catalog Controller's solr_search_params_logic + # @example This method should be added to your CatalogController's search_params_logic # class CatalogController < ApplicationController - # include Hydra::Controller::ControllerBehavior - # CatalogController.solr_search_params_logic << :add_access_controls_to_solr_params + # CatalogController.search_params_logic += [:add_access_controls_to_solr_params] # end - def add_access_controls_to_solr_params(solr_parameters, user_parameters) - apply_gated_discovery(solr_parameters, user_parameters) + def add_access_controls_to_solr_params(solr_parameters) + apply_gated_discovery(solr_parameters) end # Which permission levels (logical OR) will grant you the ability to discover documents in a search. @@ -81,14 +84,13 @@ @discovery_permissions = permissions end # Contrller before filter that sets up access-controlled lucene query in order to provide gated discovery behavior # @param solr_parameters the current solr parameters - # @param user_parameters the current user-subitted parameters - def apply_gated_discovery(solr_parameters, user_parameters) + def apply_gated_discovery(solr_parameters) solr_parameters[:fq] ||= [] solr_parameters[:fq] << gated_discovery_filters.join(" OR ") - logger.debug("Solr parameters: #{ solr_parameters.inspect }") + Rails.logger.debug("Solr parameters: #{ solr_parameters.inspect }") end def apply_group_permissions(permission_types, ability = current_ability) # for groups