お世話になっております。
当方Laravel5.5にてWebSiteを構築しております、
環境はmac OS Mojave10.14.2
ブラウザはGoogle Chrome バージョン: 71.0.3578.98になります。
やりたいこと
仮登録→メール認証→本登録の
機能を有するWebSiteで、
ログイン画面の挙動を下記の通りとしたいです。
<挙動の順序>
①ユーザーがログインするため、アドレスとパスワードを入力する
②アドレスとパスワードが正しければ、標準の機能通りログインする
アドレスもしくはパスワードが正しくない場合、
下記の手順でエラーを出す。
②-1
アドレスと一致するレコードを会員テーブルから
取得する。
②-2
なかった場合、(会員の登録進捗を表す)「status」に3をセットする。
あった場合、
a)
「status」が本登録済を表す
1であればログインする。
b)
レコードの項目「status」が1でなければ、
下記に合わせてエラーを出す。
i)仮会員登録済かつメール認証前(status:0)
ii)メール認証済かつ本登録前(status:2)
iii)退会済(status:9)
iv)例外(上記以外)
疑問
上記「挙動の順序」の②-2にて
アドレスが一致するレコードが
会員テーブルにない場合、
会員テーブルからレコードを取得する
返り値がnullになるかと存じますが、
その際にどのように「status」に3をセットするか
悩んでいます。
下記の現状でよいのかどうか、
ご教示頂けますと幸甚です。
現状
会員テーブルにアクセスし、
レコードを取得し、
空であった場合は\stdClassで
インスタンスを作成し、status項目に3
を入れています。
php
1 2 /* ログイン失敗時のメッセージ制御 */ 3 protected function sendFailedLoginResponse(Request $request) 4 { 5 $user = User::where('email', $request->email)->first(); 6 if (empty($user)) { 7 $user = new \stdClass; 8 $user ->status = 3; 9 } 10 11 if($user->status === 0 or $user->status === 2){ 12 $url_main_registration = url('/register_individual/verify/'.$user->email_verify_token); 13 throw ValidationException::withMessages( 14 [ 15 $this->username() => [trans('auth.failed_provisional')], 16 $this->url_main_registration() => [trans($url_main_registration)] 17 ]); 18 }elseif($user->status === 9){ 19 throw ValidationException::withMessages([ 20 $this->username() => [trans('auth.failed_quit')], 21 ]); 22 }else{ 23 throw ValidationException::withMessages([ 24 $this->username() => [trans('auth.failed')], 25 ]); 26 } 27 }
宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー