- ユーザ名 と パスワード
- メールアドレス と パスワード
- ユーザ名またはメールアドレス と パスワード
まず config/main.php の params に salt, login パラメータを追加。 続いて Gii で User モデルを作って hashPassword() というメソッドだけ追加しておきます。
次に yiic webapp したときにもともとある Useridentity.php を編集します。 だいたいガイドに載っているものと似ていますが Yii::app()->params['login'] がセットされていれば、 findByAttributes の attribute のキーとして使います。セットされていなければ ユーザ名またはメールアドレス が使われるので、@マークがあればメールアドレスを使い、なければユーザ名を使う、という形になります。
その他は先ほど User モデルで書いた hashPassword() を使ってフォームで入力されたパスワードをハッシュ化して、user テーブルにあるパスワードと一致すれば ERROR_NONE、すなわちログインできる状態になります。
次に LoginForm モデルを作成。
これもだいたいはもともとある LoginForm.php と似ていて、基本的には $username プロパティを $login に変更するだけです。ラベルの切り替えは Yii::app()->params['login'] の値によって動的に変更できるように init() で設定しています。重要なのは、LoginValidator() の $this->addError()、ログインフォームのどこが間違っているかはユーザには知らせてはいけないので null を指定します。
あとはコントローラとビューです。これは特に難しいところはないので説明は省略。
0 件のコメント:
コメントを投稿