Квартирный выключатель арендатора на основе зарегистрированного пользователя

Я пытаюсь реализовать индивидуальный лифт для квартиры на основе логина пользователя для каждого запроса.

В основном то, что я пытаюсь достичь, это:

  • Каждый раз, когда приходит запрос, переключайтесь на правильного арендатора
  • Если зарегистрированного пользователя нет, арендатором по умолчанию является select

Однако моя проблема в том, что я не знаю, как извлечь текущего пользователя из объекта запроса ( Rack:: Request), предоставленного Generic Elevator. Любые советы о том, как это сделать или есть другой способ получить текущего пользователя без запроса?

Я использую устройство для аутентификации.

1 ответ

Решение

Для тех, у кого такая же проблема, как у меня, это было моё решение.

конфиг / Инициализаторы /apartment.rb

#My excluded models    
config.excluded_models = %w{ User }

Rails.application.config.middleware.use 'Apartment::Elevators::Generic', lambda { |request|
      tenant_name = nil



  if request.env['rack.session']['warden.user.user.key'] != nil
      tenant_name = User.find(request.env['rack.session']['warden.user.user.key'][0][0]).account.name
  end

  return tenant_name
}

Однако я не уверен, что это на 100% отказоустойчиво, поэтому я буду публиковать обновления, если обнаружу, что с ним что-то не так.

Другие вопросы по тегам