AdminUser和User,ActiveAdmin和Devise

时间:2014-09-13 06:28:28

标签: ruby-on-rails ruby-on-rails-3 authentication devise activeadmin

此时我需要一些帮助来实现我的系统要求,我是“Rails上的新手”。我安装了两个宝石(active_admin和devise),经过一些修改后的交互不是我想要的。

我想使用电子邮件和密码(默认的ActiveAdmin行为)构建AdminUser身份验证,并且系统用户已经使用document_type和document_number以及密码进行身份验证。这意味着在系统DB上分别使用不同的登录逻辑来分配两个实体。

问题是ActiveAdmin使用devise进行身份验证,我遇到了/ admin / login页面表单的问题,它显示了从设计初始配置文件中获取的document_type和document字段。我将document_type和文档定义为用户的键。

我发现进行身份验证的解决方法是删除文档和document_type条件,并使用电子邮件作为验证的重要值。现在我的AdminUser模型如下所示:

class AdminUser < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :login, :password, :password_confirmation, :remember_me, :document, :document_type
  attr_accessor :document, :document_type

  protected

  def self.find_for_database_authentication(warden_conditions)
    conditions = warden_conditions.dup
    puts "Conditions:" + conditions.to_s
    document = conditions.delete(:document)
    document_type = conditions.delete(:document_type)
    where(conditions).where(["lower(email) = :value", { :value => document.strip.downcase }]).first
  end
end

可悲的是,我不得不说这对我不起作用。身份验证总是失败,我尝试了很多没有运气的变化 研究我发现了以两种方式使用User模型的有趣想法,但在这种情况下,它们没有共同的属性,并且角色真的不同。
任何人都实现了这样的事情?我希望是的。 欢迎提出想法。

0 个答案:

没有答案