1

我正在为应用程序使用 Basecamp 样式的子域。使用 Devise,我允许用户通过在 User.rb 中使用以下内容仅访问其子域:

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

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

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

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

谢谢!

4

1 回答 1

0

如果您为所有超级用户创建了一个帐户怎么办?我不确定这被称为身份验证过程的哪个阶段,但可能是这些方面的东西..?

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
于 2012-04-24T22:17:05.297 回答