forgot_passwordプラグインを使ってみる

restful_authenticationが入っていて,セットアップも終わっている前提でインストール.

% cd /path/to/app
% ruby script/plugin install git://github.com/greenisus/forgot_password.git
% ruby script/generate forgot_password user
% rake db:migrate

次はパスワード忘れ用画面へリンクを張ります.

<%= link_to "パスワードを忘れた場合は", "/forgot_password" -%>

今回は application.rb で

before_filter :login_required

としていたので,app/controller/forgot_passwords_controller.rb で,

skip_before_filter :login_required

を追加.さらにここを参考に,

51 |#         PasswordMailer.deliver_reset_password(@user)    
52 |        ForgotPasswordMailer.deliver_reset_password(@user)

コメントアウトします.サーバを起動してパスワード忘れリンクをクリックすると,

ここにメールアドレスを入力すると

こんな感じのメッセージが flash[:notice] で表示されてメールが送られてきます.

Date: Sat, 22 Nov 2008 00:50:42 +0900
From: ADMINEMAIL
To: rust.stnard@gmail.com
Subject: [YOURSITE] You have requested to change your password
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8

stnard, you can change your password at this URL:

http://YOURSITE/change_password/5e7fc07cacc121dd1c593d55ee36822e3af6e7aa

メールのURLをたたくと,パスワード変更画面に移動.

パスワード入力すると変更されて以下のようなメッセージが flash[:notice] で表示されます.

これでパスワード変更完了.意外に簡単に設定完了するので,これは結構便利.