Files
sx-fc/app/controllers/concerns/multi_tenancy.rb
2020-01-17 15:53:34 +06:30

34 lines
972 B
Ruby

module MultiTenancy
extend ActiveSupport::Concern
included do
set_current_tenant_through_filter if respond_to? :set_current_tenant_through_filter
before_action :set_current_tenant_by_subdomain_or_first if respond_to? :before_action
helper_method :current_shop if respond_to? :helper_method
end
private
def set_current_tenant_by_subdomain_or_first
find_tenant_by_subdomain_or_frist || not_found
end
def find_tenant_by_subdomain_or_frist
if request.subdomains.last && request.subdomains.last != 'www'
set_current_tenant(Shop.find_by(subdomain: request.subdomains.last))
elsif ENV["SERVER_MODE"] == "application"
set_current_tenant(Shop.first)
end
end
def not_found
respond_to do |format|
format.html { render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found }
format.json { head :not_found }
end
end
def current_shop
ActsAsTenant.current_tenant
end
end