公寓交换机租户基于已登录用户

时间:2015-09-02 12:11:52

标签: ruby-on-rails devise apartment-gem

我正在尝试根据apartment上的用户登录为per request basis实施自定义电梯。

基本上我想要实现的是:

  • 每次请求进入时,请切换到正确的租户
  • 如果没有登录用户,则选择默认租户

但是,我的问题是我不知道如何从Generic Elevator提供的请求(Rack::Request)对象中检索当前用户。有关如何操作的任何提示,或者有其他任何方式在没有请求的情况下获取当前用户?

我正在使用devise进行身份验证。

1 个答案:

答案 0 :(得分:6)

对于那些与我有同样问题的人,这是我的解决方案。

配置/初始化/ 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%防错,所以如果发现错误,我会发布更新。