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。
案外修正箇所が少なかったぞ。