Class: Hydra::BatchEdit::SearchService
- Inherits:
-
Object
- Object
- Hydra::BatchEdit::SearchService
- Includes:
- Blacklight::Configurable, Blacklight::SolrHelper
- Defined in:
- lib/hydra/batch_edit/search_service.rb
Instance Method Summary collapse
-
#apply_gated_search(solr_parameters, user_parameters) ⇒ Object
filter that sets up access-controlled lucene query in order to provide gated search behavior.
- #blacklight_solr ⇒ Object
- #escape_slashes(value) ⇒ Object
-
#initialize(session, user_key) ⇒ SearchService
constructor
A new instance of SearchService.
- #last_search_documents ⇒ Object
- #solr_access_control_suffix(key) ⇒ Object
Constructor Details
#initialize(session, user_key) ⇒ SearchService
Returns a new instance of SearchService.
7 8 9 10 11 |
# File 'lib/hydra/batch_edit/search_service.rb', line 7 def initialize(session, user_key) @session = session @user_key = user_key self.class.copy_blacklight_config_from(::CatalogController) end |
Instance Method Details
#apply_gated_search(solr_parameters, user_parameters) ⇒ Object
filter that sets up access-controlled lucene query in order to provide gated search behavior
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/hydra/batch_edit/search_service.rb', line 30 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 |
#blacklight_solr ⇒ Object
13 14 15 |
# File 'lib/hydra/batch_edit/search_service.rb', line 13 def blacklight_solr Blacklight.solr end |
#escape_slashes(value) ⇒ Object
50 51 52 |
# File 'lib/hydra/batch_edit/search_service.rb', line 50 def escape_slashes(value) value.gsub('/', '\/') end |
#last_search_documents ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/hydra/batch_edit/search_service.rb', line 19 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) ⇒ Object
55 56 57 58 |
# File 'lib/hydra/batch_edit/search_service.rb', line 55 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 |