设计,子域和超级用户

时间:2012-04-24 21:47:25

标签: ruby-on-rails ruby authentication devise

我正在为应用使用Basecamp风格的子域名。使用Devise,我允许用户通过在User.rb中使用以下内容来访问他们的子域:

  def self.find_for_authentication(conditions={})
    conditions[:account_id] = Account.find_by_subdomain(conditions.delete(:subdomain)).id
    super(conditions)
  end

检查以确保与尝试登录的用户关联的帐户与子域匹配。它工作正常。

我的问题是我想允许超级用户也登录...谁没有关联的“帐户”。相反,他们会在同一'用户'模型上有一个“超级用户”布尔列。

有没有办法检查正确的子域名或“超级用户”状态?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您为所有超级用户开设账户怎么办?我不确定这个被调用的Auth进程的哪个阶段,但也许是沿着这些方向的东西......?

def self.find_for_authentication(conditions={})
  if subdomain = conditions.delete(:subdomain)
    conditions[:account_id] = Account.find_by_subdomain(subdomain).id
  elsif User.where(conditions).where(:superuser => true).length > 0
    conditions[:account_id] = 1 # 1 is account reserved for super users
  end

  super(conditions)
en