前回作成した「シンプルなユーザー登録」の問題点や改善を行った方がよい部分の修正を行う。
※なお、元記事側では本件の修正内容(文字種チェックの実装、暗号化ロジックの変更等)の反映と、さらにその他の修正を反映しておりますので、最新版のソースは「シンプルなユーザー登録」側をご確認ください。
#問題点の確認
前回作成した「シンプルなユーザー登録」には以下のような問題や改善点がある。
- ユーザーが重複登録されてしまう
- パスワードの検証が行われていない
上記について修正を行う。
#「1.ユーザーが重複登録されてしまう」問題の修正
この問題は、通常同一メールアドレスを持つユーザーは多重登録できないが、現状の実装では重複登録ができてしまう問題。
##問題の原因と修正内容
原因は登録時にメールアドレスの重複を行っていない為
今回は登録時の検証ルールに重複をチェックするルールを実装し、多重登録が行われないように修正を行う。
対応としては標準で準備されているisUniqueルールを利用し重複をチェック。
※コメント欄でのご指摘ありがとうございます
#「2.パスワードの検証」を実装
先日のユーザー登録画面ではパスワード欄が1つしかなく、万が一誤入力した場合ユーザーはその事に気づくことができない。
その為、パスワードについては確認の為に2回入力させる方がよいと思われる。
##修正内容
入力フォーム上に確認用の入力フィールドを準備し、二つのフィールドの入力内容の一致チェックを行う。
具体的には新しくpasswordConfirmメソッドを追加。
passwordフィールドとpassword_confirmフィールドを比較し結果を返す。
一致していればTrue、一致していない場合はFalseを返しエラーとする。
public function passwordConfirm($check){
//2つのパスワードフィールドが一致する事を確認する
if($this->data['User']['password'] === $this->data['User']['password_confirm']){
return true;
}else{
return false;
}
}