Квартирный выключатель арендатора на основе зарегистрированного пользователя
Я пытаюсь реализовать индивидуальный лифт для квартиры на основе логина пользователя для каждого запроса.
В основном то, что я пытаюсь достичь, это:
- Каждый раз, когда приходит запрос, переключайтесь на правильного арендатора
- Если зарегистрированного пользователя нет, арендатором по умолчанию является 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% отказоустойчиво, поэтому я буду публиковать обновления, если обнаружу, что с ним что-то не так.