From 726d0ea4f3c3db12d52fdf8baa949abbb33fca2c Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Thu, 13 Aug 2026 15:46:23 +0300 Subject: [PATCH] validate url --- app/controllers/templates_uploads_controller.rb | 4 +++- app/views/submissions_filters/_filter_modal.html.erb | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/controllers/templates_uploads_controller.rb b/app/controllers/templates_uploads_controller.rb index ea4febf0..d389bfe3 100644 --- a/app/controllers/templates_uploads_controller.rb +++ b/app/controllers/templates_uploads_controller.rb @@ -6,7 +6,9 @@ class TemplatesUploadsController < ApplicationController layout 'plain' def show - redirect_to root_path if params[:url].blank? + url_uri = Addressable::URI.parse(params[:url].to_s) + + redirect_to root_path if url_uri.normalized_scheme != 'https' || url_uri.host.blank? end def create diff --git a/app/views/submissions_filters/_filter_modal.html.erb b/app/views/submissions_filters/_filter_modal.html.erb index 8794197a..b37a5dfb 100644 --- a/app/views/submissions_filters/_filter_modal.html.erb +++ b/app/views/submissions_filters/_filter_modal.html.erb @@ -1,5 +1,7 @@ +<% path_uri = Addressable::URI.parse(params[:path].to_s) %> +<% path = url_for(**Rails.application.routes.recognize_path(path_uri.path, method: :get)) %> <%= render 'shared/turbo_modal', title: local_assigns[:title] do %> - <%= form_for '', url: params[:path], method: :get, data: { turbo_frame: :_top }, html: { autocomplete: :off } do |f| %> + <%= form_for '', url: path, method: :get, data: { turbo_frame: :_top }, html: { autocomplete: :off } do |f| %> <%= hidden_field_tag :q, params[:q] if params[:q].present? %> <% local_assigns[:default_params].each do |key, value| %> <%= hidden_field_tag(key, value) if value.present? %> @@ -10,7 +12,7 @@ <% if params[:with_remove] %>
- <%= link_to t('remove_filter'), "#{params[:path]}?#{request.query_parameters.slice('q').merge(local_assigns[:default_params]).to_query}", class: 'link', data: { turbo_frame: :_top } %> + <%= link_to t('remove_filter'), "#{path}?#{request.query_parameters.slice('q').merge(local_assigns[:default_params]).to_query}", class: 'link', data: { turbo_frame: :_top } %>
<% end %> <% end %>