SSブログ

Restful Authenticationプラグイン5 - forgot_password [徒然]

ついでにパスワード忘れ対策。forgot_passwordとはRestful Authenticationとあわせて使うものだそうだ。そこいらへんは、既にメールアクティベーションできているので、ただインストールしてちょこっと設定してあげれば動きそう。特にいちから作り込まなくても、前回のプロジェクトをコピーして、そのまま使えそうな気がする。ま、今回は前回の分の続き、ということでお願いします。

でも、どうにも不具合が多くて苦戦。AASMを入れないといけないのかもしれない。




ここを参照。

 http://www.func09.com/wordpress/archives/348
 https://github.com/greenisus/forgot_password

ってか、「rails forgot_password」でググったら、おいらのブログがすでに二位にきていた。まだ、このエントリも書き上げてないのにな。そんなにマイナーなのか?むぅ。

ruby script/plugin install git://github.com/greenisus/forgot_password.git
ruby script/generate forgot_password password user
rake db:migrate
ruby script/server


ここいらへんは本家サイトと一緒。元のRestful Authenticationを踏み台にしているとはいえ、上のサイトでは、今回は追加されるソースとかもかなり少ないので、できたら中身を検証しながらいきます。今まで動かす事に始終してしまったので、勉強のために少しは内容を理解しようと思った。

なんも細工しないで、そのまま/forgot_passwordにアクセス。メールアドレスを入れて、ボタンを押すもエラーが出る。

 EOFError in PasswordsController#create
 end of file reached

おぉこれは前にも見たね。EOFエラーはメールアドレスに大なり小なりのネストが必要だったのでした。今回はどうかと言うと、前はUserMailerクラスで設定したけれど、今度はPasswordMailerクラスの中なのでした。中身的には、Restful Authenticationのuser_mailer.rbとさして変わらないので、変更点も一緒で、URL部分とメールアドレスを大なり小なりでネストするだけで、動作は何とかなる。

グローバルスコープでConst扱いで設定するようにしようかな。それとももっといい定番の方法があるのだろうか。いまいちRailsに慣れてないので、どこ書いていいか分からんのですが、全体で使う設定を書くファイルってどこなのかな? 他の人が書いてたように、environment.rbあたりに$な変数で書いちゃおうかな。


/forgot_passwordで再度、メールアドレスを投入して、メールを送る。今度はメールを送るところまでは問題ない。指定したメールでURLが送られてきて、/change_passwordに入るとリセットするパスワードを要求されるので、入れてみる。

[localhost:3000] Your password has been reset.っていう題名のメールがニ度来る。変なの。確か、参考ページでもバグがあるみたいな事を書いてあった。

そして更に都合の悪い事に、パスワードはリセットされてるんだと思うけど、アクティベーションされてない状態になってしまう。MySQL Query Browserを見るとusersテーブルのactivation_codeの部分にデータが入っていて、アクティベーションを再度しないと入れなくなっている。リセットの際に、ログインをできないようにする必要があるのか疑問である。だって結局、入れなくなってるからアクティベーションをかけずに、ただ単にパスワードを書き換えれば済む事なんじゃないかな? だってメールアドレスの確認って、パスワードを変える前には絶対してるんだし。

ちなみに、無理矢理アクティベーションをするために、テーブルから直にURLになるactivation_codeをクエリブラウザから取ってきて、無理矢理アクティベーションするサイトに入ると、アクティベートされましたよメールが、なぜか二回送られます。普通にメールでアクティベートする分には問題がなかったので、forgot_passwordによって普通にメールで認証を行う事は支障がないと思います。

まだ何か設定が足りないのかなぁ。もしバグだったら直してお知らせしたい。あと、普通にログインしているだけなのに、いちいちアクティベートされたとメールが来て鬱陶しい。他の状態だとそういう事はないので、ログイン時にメールを発行してしまうのはforgot_passwordによる弊害なのかも。


と、思っていたら、他のforgot_passwordが入ったプロジェクトでなくても、ログインするごとにアクティベートしました、なメールが来るようになっていた。そもそもRestful Authenticationが出しているっぽい。/loginを示す場所でメールを出す作業をしているのだろうけど、forgot_password以前に基本的にダメになっている可能性が大。何だろうなぁ。

次はログインする度に、アクティベーションしましたメールが無駄に発行されないようにするやり方を見つけてみたい。AASM入れたら出ないバグだったら嫌だなぁ。forgot_passwordは、どうにも動作が危ういので、自分で直すにしても後回し。

タグ:Ruby Rails2
nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。