mirror of
https://github.com/discourse/discourse.git
synced 2024-12-24 06:45:03 +08:00
25778d9861
This commit updates `TopicQuery.validators` to cover all of the public options listed in `TopicQuery.public_valid_options`. This is done to fix the app returning a 500 response code when an invalid value, such as a hash, is passed as a query param when accessing the various topic list routes.
21 lines
562 B
Ruby
21 lines
562 B
Ruby
# frozen_string_literal: true
|
|
|
|
module TopicQueryParams
|
|
def build_topic_list_options
|
|
options = {}
|
|
params[:tags] = [params[:tag_id], *Array(params[:tags])].uniq if params[:tag_id].present?
|
|
|
|
TopicQuery.public_valid_options.each do |key|
|
|
if params.key?(key) && (val = params[key]).present?
|
|
options[key] = val
|
|
raise Discourse::InvalidParameters.new key if !TopicQuery.validate?(key, val)
|
|
end
|
|
end
|
|
|
|
# hacky columns get special handling
|
|
options[:topic_ids] = param_to_integer_list(:topic_ids)
|
|
|
|
options
|
|
end
|
|
end
|