class CurationConcerns::Collections::SearchService
Public Class Methods
new(session, user_key)
click to toggle source
# File lib/curation_concerns/collections/search_service.rb, line 7 def initialize(session, user_key) @session = session @user_key = user_key self.class.copy_blacklight_config_from(::CatalogController) end
Public Instance Methods
apply_gated_search(solr_parameters, _user_parameters)
click to toggle source
filter that sets up access-controlled lucene query in order to provide gated search behavior @param solr_parameters the current solr parameters @param user_parameters the current user-submitted parameters
# File lib/curation_concerns/collections/search_service.rb, line 26 def apply_gated_search(solr_parameters, _user_parameters) solr_parameters[:fq] ||= [] # Grant access to public content user_access_filters = [] user_access_filters << "#{solr_access_control_suffix(:group)}:public" # Grant access based on user id & role unless @user_key.blank? # for roles ::RoleMapper.roles(@user_key).each do |role| user_access_filters << "#{solr_access_control_suffix(:group)}:#{escape_slashes(role)}" end # for individual person access user_access_filters << "#{solr_access_control_suffix(:individual)}:#{escape_slashes(@user_key)}" end solr_parameters[:fq] << user_access_filters.join(' OR ') solr_parameters end
escape_slashes(value)
click to toggle source
# File lib/curation_concerns/collections/search_service.rb, line 46 def escape_slashes(value) value.gsub('/', '\/') end
last_search_documents()
click to toggle source
self.search_params_logic << :apply_gated_search
# File lib/curation_concerns/collections/search_service.rb, line 15 def last_search_documents return [] if @session[:history].blank? last_search_id = @session[:history].first search = Search.find(last_search_id) _, document_list = get_search_results(search.query_params, fl: 'id', rows: 1000) document_list end
solr_access_control_suffix(key)
click to toggle source
@param [Symbol] key The permission type to return. Must be `:group` or `:individual`
# File lib/curation_concerns/collections/search_service.rb, line 51 def solr_access_control_suffix(key) raise ArgumentError, 'you must provide :group or :individual' unless [:group, :individual].include?(key) Hydra.config[:permissions][:edit][key] end