module Croods::Controller::MultiTenancy

Protected Instance Methods

authorize_multi_tenancy() click to toggle source
# File lib/croods/controller/multi_tenancy.rb, line 40
def authorize_multi_tenancy
  return unless Croods.multi_tenancy?

  return unless current_user

  return if request.headers['Tenant'] == current_tenant.slug

  raise(
    Pundit::NotAuthorizedError,
    'You are not authorized to access this organization'
  )
end
current_tenant() click to toggle source
# File lib/croods/controller/multi_tenancy.rb, line 26
def current_tenant
  return unless Croods.multi_tenancy?

  @current_tenant ||= current_user&.tenant
end
header_tenant() click to toggle source
# File lib/croods/controller/multi_tenancy.rb, line 20
def header_tenant
  return unless Croods.multi_tenancy?

  tenant_model.find_by!(slug: request.headers['Tenant'])
end
tenant_model() click to toggle source
# File lib/croods/controller/multi_tenancy.rb, line 14
def tenant_model
  return unless Croods.multi_tenancy?

  Croods.multi_tenancy_by.to_s.camelize.constantize
end
tenant_params(model) click to toggle source
# File lib/croods/controller/multi_tenancy.rb, line 32
def tenant_params(model)
  return {} unless Croods.multi_tenancy?

  return {} unless model.has_attribute? Croods.tenant_attribute

  { Croods.tenant_attribute => current_tenant.id }
end