Quantcast
Channel: laravel5.8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 87

Laravel5.8でログイン失敗時にセッションにのせてデータを返す

$
0
0
例えば、ログインフォームをモーダルで実装していた時とかに、何もしていないとログイン失敗でリダイレクト時にモーダルが隠れている状態になるので return back()->with('login_modal', 'active') でセッションにのせて返す。 blade側で {{ session('login_modal') }} で active が取れるのでclassとかにブチ込んでモーダルを表示させたいというやつです。 ログイン失敗時のLaravelの処理がググっても日本語の結果があまり出てこなかったので、誰かのためになれば。。 ログイン機能はみなさんお馴染みの make:authで作っているので、そこで生成されたものを追っていく。 ログイン処理は LoginControllerで処理されているが、 LoginControllerは AuthenticatesUsers をUseしているので、それを見にいく。 vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php ~~ protected function sendFailedLoginResponse(Request $request) { throw ValidationException::withMessages([ $this->username() => [trans('auth.failed')], ]); } ~~ で処理されているっぽい。 ここでは単純にバリデーションをthrowしているだけ。なのでここをよしなに修正する。 流石に vendor内をいじるのは良くないので、 LoginControllerでオーバーライドする。 LoginController.php protected function sendFailedLoginResponse(Request $request) { // throw ValidationException::withMessages([ // $this->username() => [trans('auth.failed')], // ]); // ↑が元々の記述 return back()->with('login_modal', 'active')->withErrors([ $this->username() => [trans('auth.failed')], ]); } 以上! モーダルは class="active"で表示状態になるとして、 modal <div id="modal" class="{{ session('login_modal') }}"> ~~ </div> としておくと、 sendFailedLoginResponse()で帰ってきたときにモーダルがactiveになる。 以上!

Viewing all articles
Browse latest Browse all 87

Trending Articles