discourse/lib/topic_query_params.rb
Alan Guo Xiang Tan 25778d9861
FIX: Return 400 response codes when topic list query params are invalid (#27930)
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.
2024-07-16 10:30:04 +08:00

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