CakePHP 確認メール有りのユーザー登録

Bookmark this on Google Bookmarks
LINEで送る
Pocket

久しぶりにCakePHPでサイトを作っている。

ひとまずユーザー登録機能を作成した。
仮登録後にメールを送信、メールに書かれたURLにアクセスすると本登録というやつだ。
RailsだとDevise等のプラグインで割と簡単に終わる所だが、
Cakeの場合何を使っていいかすぐに見つからなかったのでAuthコンポーネントとEmailコンポーネントを使って作成した。
CAPTCHAには「Securimage PHP CAPTCHA」を使った。
これは注目!様々なタイプのCAPTCHAが作れるPHPライブラリ「Securimage PHP CAPTCHA」

Userテーブルに仮登録と本登録の違いを記録しておくためのVerifiedフィールド(フィールド名は何でもよい)を作っておき,メール記載のURLにアクセスされた時にそのフラグを仮登録から本登録へ変更する。

$this->Auth->userScope = array('User.verified' => 1); 

をUsersコントローラのbeforeFilter内に記述しておくことでフラグが仮登録の場合(0の場合)はログイン出来ないようにしている。
このuserScopeがあるおかげで簡単に実装できた。

もう作ってしまったのだがCakeのコミュニティーでタイムリーな感じでユーザー登録プラグインが紹介されていた。

Sign Me Up A CakePHP User Registration Plugin
http://www.jotlab.com/2011/01/29/sign-me-up-a-cakephp-registration-plugin/

* User registration form with basic fields Username, email, password and password confirmation.
* Default field validation which can be easily overwritten in your models.
* Welcome email sending upon successful registration.
* User activation code generation and activation via a link/post.
* Integrates with Auth settings for redirects and email/view templates easily overwritten.

パスワードに対してはconfirmation機能がついているがメールアドレスに対しては無いようだ。
メールアドレスを確認で2回入力にしたかったのである意味ホッとしたが今の実装で何か不具合が出てきたらこのプラグインを使うかもしれない。

上記のuserScopeについては自分の持っている本には載っていなかったが
CakePHP辞典には載っているそうだ。
便利そうなので購入しようと思う。

– 追記 –
買った。オプション等が網羅されていてすごく便利。