Laravelの FormRequest での入力値のバリデーションの仕組みは理解できました。
ここへ来て、Controller内において、DBからの値を取得したログイン判定処理で悩んでおります。
ちなみに、Laravel独自の認証は使用しません。
具体的には、$login_id と $password のパラメータを取得してユーザ判定を行いますが、その中で、該当ユーザのログイン条件を、ユーザテーブル以外の他の全く関係ないDBテーブルから条件取得する必要があります。
その場合の処理の組み立て方がよくわかりません。
質問としては、Controller からDBアクセスして、失敗した(Falseを返した)場合に、どのように元のログイン画面へ戻り(redirect)、エラーメッセージを出力すれば良いのかを悩んでおります。
- controller内にて
- ユーザ判定を行って
- 失敗した場合にログイン画面へ戻って
- 失敗した原因をエラー表示したい
php
1 public function auth(Request $request){ 2 //パラメータ取得 3 $email = $request->email; 4 $passwd = $request->passwd; 5 6 //ユーザ判定処理 (例) 7 $user = $this::isUser($email, $passwd); 8 $ok1 = $this::isValid1($user); 9 $ok2 = $this::isValid2($user); 10 $ok3 = $this::isValid3($user); 11 12 // *** この後の処理を場合をどうしようかと?**** 13 // if($okでない場合){ 14 //$rules = []; 15 //$messages = []; 16 //$validator = Validator::make([], $rules, $messages); 17 18 // *** 下記のようにログイン画面へ戻ってエラーメッセージを表示できないか? **** 19 if($validator->fails()){ 20 //ログイン失敗 21 return redirect('/login') 22 ->withErrors($validator) 23 ->withInput(); 24 }else{ 25 //ログイン成功 26 return redirect('/mypage'); 27 } 28 }
それとも、ユーザ判定でのエラーは、普通のvalidationとは切り離して考えた方が良いのでしょうか?
何かアドバイスが頂ければと思っています。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/11 03:52