diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index b639a9dda3f754ebf8fe5d8b02ac55ff1cc1afc8..b9e7007f98ff0234fed684677897f3b30a4d19e6 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -191,17 +191,7 @@ def append_info_to_payload(payload) # Merging to :metadata will ensure these are logged as top level keys payload[:metadata] ||= {} - payload[:metadata]['meta.search.group_id'] = params[:group_id] - payload[:metadata]['meta.search.project_id'] = params[:project_id] - payload[:metadata]['meta.search.scope'] = params[:scope] || @scope - payload[:metadata]['meta.search.filters.confidential'] = params[:confidential] - payload[:metadata]['meta.search.filters.state'] = params[:state] - payload[:metadata]['meta.search.force_search_results'] = params[:force_search_results] - payload[:metadata]['meta.search.project_ids'] = params[:project_ids] - payload[:metadata]['meta.search.filters.language'] = params[:language] - payload[:metadata]['meta.search.type'] = @search_type if @search_type.present? - payload[:metadata]['meta.search.level'] = @search_level if @search_level.present? - payload[:metadata][:global_search_duration_s] = @global_search_duration_s if @global_search_duration_s.present? + payload[:metadata].merge!(payload_metadata) if search_service.abuse_detected? payload[:metadata]['abuse.confidence'] = Gitlab::Abuse.confidence(:certain) @@ -209,6 +199,23 @@ def append_info_to_payload(payload) end end + def payload_metadata + {}.tap do |metadata| + metadata['meta.search.group_id'] = params[:group_id] + metadata['meta.search.project_id'] = params[:project_id] + metadata['meta.search.scope'] = params[:scope] || @scope + metadata['meta.search.page'] = params[:page] || '1' + metadata['meta.search.filters.confidential'] = params[:confidential] + metadata['meta.search.filters.state'] = params[:state] + metadata['meta.search.force_search_results'] = params[:force_search_results] + metadata['meta.search.project_ids'] = params[:project_ids] + metadata['meta.search.filters.language'] = params[:language] + metadata['meta.search.type'] = @search_type if @search_type.present? + metadata['meta.search.level'] = @search_level if @search_level.present? + metadata[:global_search_duration_s] = @global_search_duration_s if @global_search_duration_s.present? + end + end + def block_anonymous_global_searches return unless search_service.global_search? return if current_user diff --git a/spec/controllers/search_controller_spec.rb b/spec/controllers/search_controller_spec.rb index 9453520341be0d187f09f7845df0db13bf6bf76e..82b7c1ba92746321beabb96fccf723bdca3ac204 100644 --- a/spec/controllers/search_controller_spec.rb +++ b/spec/controllers/search_controller_spec.rb @@ -583,12 +583,14 @@ def request expect(payload[:metadata]['meta.search.type']).to eq('basic') expect(payload[:metadata]['meta.search.level']).to eq('global') expect(payload[:metadata]['meta.search.filters.language']).to eq('ruby') + expect(payload[:metadata]['meta.search.page']).to eq('2') end get :show, params: { scope: 'issues', search: 'hello world', group_id: '123', + page: '2', project_id: '456', project_ids: %w[456 789], confidential: true,