我正在为应用使用Basecamp风格的子域名。使用Devise,我允许用户通过在User.rb中使用以下内容来访问他们的子域:
def self.find_for_authentication(conditions={})
conditions[:account_id] = Account.find_by_subdomain(conditions.delete(:subdomain)).id
super(conditions)
end
检查以确保与尝试登录的用户关联的帐户与子域匹配。它工作正常。
我的问题是我想允许超级用户也登录...谁没有关联的“帐户”。相反,他们会在同一'用户'模型上有一个“超级用户”布尔列。
有没有办法检查正确的子域名或“超级用户”状态?
谢谢!
答案 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