diff --git a/lib/homepage_helper.rb b/lib/homepage_helper.rb index c4a77a24482..93919cf04ab 100644 --- a/lib/homepage_helper.rb +++ b/lib/homepage_helper.rb @@ -4,6 +4,16 @@ class HomepageHelper def self.resolve(request = nil, current_user = nil) return "custom" if ThemeModifierHelper.new(request: request).custom_homepage + enabled = false + enabled = + DiscoursePluginRegistry.apply_modifier( + :custom_homepage_enabled, + enabled, + request: request, + current_user: current_user, + ) + return "custom" if enabled + current_user ? SiteSetting.homepage : SiteSetting.anonymous_homepage end end diff --git a/spec/lib/homepage_helper_spec.rb b/spec/lib/homepage_helper_spec.rb index e0ab66b028f..b62ea02a3e4 100644 --- a/spec/lib/homepage_helper_spec.rb +++ b/spec/lib/homepage_helper_spec.rb @@ -14,6 +14,15 @@ RSpec.describe HomepageHelper do expect(HomepageHelper.resolve).to eq("custom") end + it "returns custom when a plugin modifies the custom_homepage_enabled to true" do + DiscoursePluginRegistry + .expects(:apply_modifier) + .with(:custom_homepage_enabled, false, request: nil, current_user: nil) + .returns(true) + + expect(HomepageHelper.resolve).to eq("custom") + end + context "when first item in top menu is not valid for anons" do it "distinguishes between auth homepage and anon homepage" do SiteSetting.top_menu = "new|top|latest|unread"