diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index fd9c77a6a..acd3ba587 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,6 +1,7 @@ require "application_responder" class ApplicationController < ActionController::Base + include TenantVariants include GlobalizeFallbacks include HasFilters include HasOrders diff --git a/app/controllers/concerns/tenant_variants.rb b/app/controllers/concerns/tenant_variants.rb new file mode 100644 index 000000000..6475e7d9b --- /dev/null +++ b/app/controllers/concerns/tenant_variants.rb @@ -0,0 +1,13 @@ +module TenantVariants + extend ActiveSupport::Concern + + included do + before_action :set_tenant_variant + end + + private + + def set_tenant_variant + request.variant = Tenant.current_schema.to_sym + end +end diff --git a/app/controllers/management/base_controller.rb b/app/controllers/management/base_controller.rb index 81afa78e4..f426cbd3c 100644 --- a/app/controllers/management/base_controller.rb +++ b/app/controllers/management/base_controller.rb @@ -1,4 +1,5 @@ class Management::BaseController < ActionController::Base + include TenantVariants include GlobalizeFallbacks layout "management" default_form_builder ConsulFormBuilder diff --git a/app/controllers/management/sessions_controller.rb b/app/controllers/management/sessions_controller.rb index 84d9d1265..2a36ded0a 100644 --- a/app/controllers/management/sessions_controller.rb +++ b/app/controllers/management/sessions_controller.rb @@ -1,6 +1,7 @@ require "manager_authenticator" class Management::SessionsController < ActionController::Base + include TenantVariants include GlobalizeFallbacks include AccessDeniedHandler default_form_builder ConsulFormBuilder diff --git a/spec/controllers/concerns/tenant_variants_spec.rb b/spec/controllers/concerns/tenant_variants_spec.rb new file mode 100644 index 000000000..46e949254 --- /dev/null +++ b/spec/controllers/concerns/tenant_variants_spec.rb @@ -0,0 +1,23 @@ +require "rails_helper" + +describe TenantVariants do + controller(ActionController::Base) do + include TenantVariants + + def index + render plain: request.variant + end + end + + it "uses the default tenant by default" do + get :index + expect(response.body).to eq "[:public]" + end + + it "uses the current tenant schema when defined" do + allow(Tenant).to receive(:current_schema).and_return("random-name") + + get :index + expect(response.body).to eq '[:"random-name"]' + end +end