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で処理されているが、 LoginControllerAuthenticatesUsersをUseしているので、それを見にいく。

vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
~~protectedfunctionsendFailedLoginResponse(Request$request){throwValidationException::withMessages([$this->username()=>[trans('auth.failed')],]);}~~

で処理されているっぽい。
ここでは単純にバリデーションをthrowしているだけ。なのでここをよしなに修正する。
流石に vendor内をいじるのは良くないので、 LoginControllerでオーバーライドする。

LoginController.php
protectedfunctionsendFailedLoginResponse(Request$request){// throw ValidationException::withMessages([//     $this->username() => [trans('auth.failed')],// ]);// ↑が元々の記述returnback()->with('login_modal','active')->withErrors([$this->username()=>[trans('auth.failed')],]);}

以上!

モーダルは class="active"で表示状態になるとして、

modal
<divid="modal"class="{{ session('login_modal') }}">~~</div>

としておくと、 sendFailedLoginResponse()で帰ってきたときにモーダルがactiveになる。

以上!


Viewing all articles
Browse latest Browse all 87

Trending Articles