###前提・実現したいこと
・RubyOnRailsのDeviseの認証の項目にnameを追加したいです。
Deviseの認証は通常
・ Email
・ Password
ですが、
・ Name
・ Email
・ Password
の3つで認証したいです。
・項目は全てDBに半角英数字で保存されて、全ての項目の値と一致して
認証が正常に処理される。という処理をしたいです。
・devise-4.2.0を使用しています。
ためしに以下のように書いたところ、NameとPasswordで認証できるようになってしまい
Emailの認証ができなくなりました。
class ApplicationController < ActionController::Base before_filter :configure_permitted_parameters, if: :devise_controller? private def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up){|sign_up| sign_up.permit(:name, :email, :password)} end protect_from_forgery with: :exception end
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:name] validates :name, presence: true def self.find_first_by_auth_conditions(warden_conditions) conditions = warden_conditions.dup if login = conditions.delete(:login) #認証の条件式を変更する where(conditions).where(["name = :value", { :value => name }]).first else where(conditions).first end end
ご助力をお願いいたします。
あなたの回答
tips
プレビュー