restful_authenticationをメールアドレスでログインに変更してみる

restful_authenticationを利用して認証機能を付けたのだけど、
ログイン時に必要な入力項目のデフォルトは「ログインID」と「パスワード」のようだ。
ということは逆にログインIDを一意にしなければならず、運用上あまり嬉しくない。

ということで、現在の主流「メールアドレス」と「パスワード」でログイン認証できるように変更を試みてみます。


まずは前提条件としてrestful_authenticationが既に入っているものとします。
restful_authenticationのインストールやら設定やらは以下のサイトを参照してやってみましょう。


それでは始めます。
まず、app/models/user.rb でloginをemailに変更

def self.authenticate(login, password)
u = find_in_state :first, :active, :conditions => {:email => login} # need to get the salt
  ・・・
end


次に、app/controllers/sessions_controller.rb のパラメータもemailに変更

def create
self.current_user = User.authenticate(params[:email], params[:password])
  ・・・
end


最後に、ログイン時の入力をログインIDからメールアドレスに変更すれば完了。

 ・・・<%= text_field_tag 'email' %>
 ・・・


うん、OK。
案外修正箇所が少なかったぞ。