From e84d5549efe6c24a6230cfbe2ce8c1b511ffc9d6 Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Thu, 17 Mar 2016 00:26:07 +1100 Subject: [PATCH] FEATURE: only allow sidekiq in master site when hosted on multisite --- config/routes.rb | 3 ++- lib/admin_constraint.rb | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index a3e5a772d96..ce8a19fc7db 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -20,7 +20,8 @@ Discourse::Application.routes.draw do mount Sidekiq::Web => "/sidekiq" mount Logster::Web => "/logs" else - mount Sidekiq::Web => "/sidekiq", constraints: AdminConstraint.new + # only allow sidekie in master site + mount Sidekiq::Web => "/sidekiq", constraints: AdminConstraint.new(require_master: true) mount Logster::Web => "/logs", constraints: AdminConstraint.new end diff --git a/lib/admin_constraint.rb b/lib/admin_constraint.rb index 2d5df1f5bd4..923e5e806c0 100644 --- a/lib/admin_constraint.rb +++ b/lib/admin_constraint.rb @@ -2,7 +2,12 @@ require_dependency 'current_user' class AdminConstraint + def initialize(options={}) + @require_master = options[:require_master] + end + def matches?(request) + return false if @require_master && RailsMultisite::ConnectionManagement.current_db != "default" provider = Discourse.current_user_provider.new(request.env) provider.current_user && provider.current_user.admin? end