From 694edac4d59301c4196dac1de9be1bc36b1dd643 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 26 Jul 2018 23:00:01 +0200 Subject: [PATCH 1/4] Interference Marketable Routes & ActiveStorage fixed --- pages/lib/refinery/pages/configuration.rb | 3 ++- pages/lib/refinery/pages/engine.rb | 3 ++- pages/spec/controllers/refinery/pages_controller_spec.rb | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pages/lib/refinery/pages/configuration.rb b/pages/lib/refinery/pages/configuration.rb index b2863e926e..68871e68b4 100644 --- a/pages/lib/refinery/pages/configuration.rb +++ b/pages/lib/refinery/pages/configuration.rb @@ -8,7 +8,7 @@ module Pages :cache_pages_full, :layout_template_whitelist, :use_layout_templates, :page_title, :absolute_page_links, :types, :auto_expand_admin_tree, :show_title_in_body, - :friendly_id_reserved_words, :layout_templates_pattern, :view_templates_pattern, + :friendly_id_reserved_words, :reserved_paths, :layout_templates_pattern, :view_templates_pattern, :add_whitelist_elements, :add_whitelist_attributes, :whitelist_elements, :whitelist_attributes, :home_page_path @@ -64,6 +64,7 @@ def layout_template_whitelist self.friendly_id_reserved_words = %w( index new session login logout users refinery admin images ) + self.reserved_paths = %w(/rails/active_storage) self.layout_templates_pattern = 'app', 'views', '{layouts,refinery/layouts}', '*html*' self.view_templates_pattern = 'app', 'views', '{pages,refinery/pages}', '*html*' end diff --git a/pages/lib/refinery/pages/engine.rb b/pages/lib/refinery/pages/engine.rb index 543dc55f01..5b1467558d 100644 --- a/pages/lib/refinery/pages/engine.rb +++ b/pages/lib/refinery/pages/engine.rb @@ -48,7 +48,8 @@ class Engine < ::Rails::Engine def append_marketable_routes Refinery::Core::Engine.routes.append do - get '*path', :to => 'pages#show', :as => :marketable_page + get '*path', :to => 'pages#show', :as => :marketable_page, + constraints: lambda { |request| !Refinery::Pages.config.reserved_paths.any? { |path| request.path.start_with?(path) } } end end diff --git a/pages/spec/controllers/refinery/pages_controller_spec.rb b/pages/spec/controllers/refinery/pages_controller_spec.rb index 6e04a55a45..2e9d86a4df 100644 --- a/pages/spec/controllers/refinery/pages_controller_spec.rb +++ b/pages/spec/controllers/refinery/pages_controller_spec.rb @@ -31,5 +31,11 @@ module Refinery expect(response).to render_template("show") end end + + describe "#show" do + it "does not interfere with active storage" do + expect(:get => "/rails/active_storage").not_to be_routable + end + end end end From 8144e7e319894a15442ddb4a378866edb7d86df6 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 27 Jul 2018 10:44:22 +0200 Subject: [PATCH 2/4] exclude all words in reserved path from friendly id --- pages/lib/refinery/pages/configuration.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/lib/refinery/pages/configuration.rb b/pages/lib/refinery/pages/configuration.rb index 68871e68b4..3ad4d8a0ea 100644 --- a/pages/lib/refinery/pages/configuration.rb +++ b/pages/lib/refinery/pages/configuration.rb @@ -61,10 +61,10 @@ def layout_template_whitelist self.absolute_page_links = false self.types = Types.registered self.auto_expand_admin_tree = true + self.reserved_paths = %w(/rails/active_storage) self.friendly_id_reserved_words = %w( index new session login logout users refinery admin images - ) - self.reserved_paths = %w(/rails/active_storage) + ) + self.reserved_paths.map { |path| path.split('/') }.flatten.uniq - [""] self.layout_templates_pattern = 'app', 'views', '{layouts,refinery/layouts}', '*html*' self.view_templates_pattern = 'app', 'views', '{pages,refinery/pages}', '*html*' end From 21c49c7e8530a005fa5dacfec2a713c6abc6aebc Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 27 Jul 2018 15:12:41 +0200 Subject: [PATCH 3/4] changed from taking every element from the reserved path to taking only the first, in case of ['/rails/active_record'] this only takes 'rails' --- pages/lib/refinery/pages/configuration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/lib/refinery/pages/configuration.rb b/pages/lib/refinery/pages/configuration.rb index 3ad4d8a0ea..40812f492f 100644 --- a/pages/lib/refinery/pages/configuration.rb +++ b/pages/lib/refinery/pages/configuration.rb @@ -64,7 +64,7 @@ def layout_template_whitelist self.reserved_paths = %w(/rails/active_storage) self.friendly_id_reserved_words = %w( index new session login logout users refinery admin images - ) + self.reserved_paths.map { |path| path.split('/') }.flatten.uniq - [""] + ) + self.reserved_paths.map { |path| (path.split('/') - [""]).first}.flatten.uniq self.layout_templates_pattern = 'app', 'views', '{layouts,refinery/layouts}', '*html*' self.view_templates_pattern = 'app', 'views', '{pages,refinery/pages}', '*html*' end From e5333dfb90b77157cb7a8722d493181ab61721bb Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 31 Jul 2018 16:49:58 +0200 Subject: [PATCH 4/4] refined syntax --- pages/lib/refinery/pages/configuration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/lib/refinery/pages/configuration.rb b/pages/lib/refinery/pages/configuration.rb index 40812f492f..6be2553001 100644 --- a/pages/lib/refinery/pages/configuration.rb +++ b/pages/lib/refinery/pages/configuration.rb @@ -64,7 +64,7 @@ def layout_template_whitelist self.reserved_paths = %w(/rails/active_storage) self.friendly_id_reserved_words = %w( index new session login logout users refinery admin images - ) + self.reserved_paths.map { |path| (path.split('/') - [""]).first}.flatten.uniq + ) | self.reserved_paths.map { |path| path.split('/').reject(&:blank?).first}.flatten.uniq self.layout_templates_pattern = 'app', 'views', '{layouts,refinery/layouts}', '*html*' self.view_templates_pattern = 'app', 'views', '{pages,refinery/pages}', '*html*' end