mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-13 08:34:49 +08:00
Limit quick search possible classes and improve params check for reports and activities [SCI-11260] (#8034)
This commit is contained in:
parent
19aa77f14a
commit
2d70773cda
5 changed files with 38 additions and 3 deletions
|
@ -151,7 +151,25 @@ class GlobalActivitiesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def activity_filter_params
|
def activity_filter_params
|
||||||
params.permit(:name, filter: {})
|
params.permit(
|
||||||
|
:name,
|
||||||
|
filter: [
|
||||||
|
:to_date,
|
||||||
|
:from_date,
|
||||||
|
{ types: [] },
|
||||||
|
{ subjects: {
|
||||||
|
'Report' => [],
|
||||||
|
'Project' => [],
|
||||||
|
'MyModule' => [],
|
||||||
|
'Protocol' => [],
|
||||||
|
'Experiment' => [],
|
||||||
|
'RepositoryRow' => [],
|
||||||
|
'RepositoryBase' => []
|
||||||
|
} },
|
||||||
|
{ users: [] },
|
||||||
|
{ teams: [] }
|
||||||
|
]
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def activity_filters
|
def activity_filters
|
||||||
|
|
|
@ -361,7 +361,7 @@ class ReportsController < ApplicationController
|
||||||
|
|
||||||
def report_params
|
def report_params
|
||||||
params.require(:report)
|
params.require(:report)
|
||||||
.permit(:name, :description, :grouped_by, :report_contents, settings: {})
|
.permit(:name, :description, :grouped_by, :report_contents, settings: permit_report_settings_structure(Report::DEFAULT_SETTINGS))
|
||||||
end
|
end
|
||||||
|
|
||||||
def search_params
|
def search_params
|
||||||
|
|
|
@ -145,7 +145,10 @@ class SearchController < ApplicationController
|
||||||
|
|
||||||
def quick
|
def quick
|
||||||
results = if params[:filter].present?
|
results = if params[:filter].present?
|
||||||
object_quick_search(params[:filter].singularize)
|
class_name = params[:filter].singularize
|
||||||
|
return render_422(t('general.invalid_params')) unless Constants::QUICK_SEARCH_SEARCHABLE_OBJECTS.include?(class_name)
|
||||||
|
|
||||||
|
object_quick_search(class_name)
|
||||||
else
|
else
|
||||||
Constants::QUICK_SEARCH_SEARCHABLE_OBJECTS.filter_map do |object|
|
Constants::QUICK_SEARCH_SEARCHABLE_OBJECTS.filter_map do |object|
|
||||||
next if object == 'label_template' && !LabelTemplate.enabled?
|
next if object == 'label_template' && !LabelTemplate.enabled?
|
||||||
|
|
|
@ -106,4 +106,17 @@ module ReportsHelper
|
||||||
experiment_element.experiment.description
|
experiment_element.experiment.description
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def permit_report_settings_structure(settings_definition)
|
||||||
|
settings_definition.each_with_object([]) do |(key, value), permitted|
|
||||||
|
permitted << case value
|
||||||
|
when Hash
|
||||||
|
{ key => permit_report_settings_structure(value) }
|
||||||
|
when Array
|
||||||
|
{ key => [] }
|
||||||
|
else
|
||||||
|
key
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4305,6 +4305,7 @@ en:
|
||||||
comment_placeholder: "Your Message"
|
comment_placeholder: "Your Message"
|
||||||
comment_placeholder_new: "Add new comment…"
|
comment_placeholder_new: "Add new comment…"
|
||||||
archived: "Archived"
|
archived: "Archived"
|
||||||
|
invalid_params: "Invalid params"
|
||||||
sort:
|
sort:
|
||||||
title: "Sorting"
|
title: "Sorting"
|
||||||
new_html: "Started last"
|
new_html: "Started last"
|
||||||
|
|
Loading…
Add table
Reference in a new issue