Laravelで会員登録時・ログイン時にフラッシュメッセージを出す

はじめに

会員登録・ログイン・ログアウト時にフラッシュメッセージが出たらわかりやすいなと思ったので実装してみました。

前提

以下記事を参考にトースターのフラッシュメッセージを出せる状態にしていることが前提です。
※なんならログインは以下記事ですぐ実装できちゃいます◎

Laravel:フラッシュメッセージを表示する

ログイン

一番簡単です!

LoginController.phpを以下のように編集


// protected $redirectTo = '/';
protected function redirectTo() {
  session()->flash('flash_message', 'ログインしました');
}

ログアウト

LoginController.phpでuseしているAuthenticatesUsersトレイトのlogoutメソッドをオーバーライドします。といってもLoginController.phpに以下を追記するだけ。


use Illuminate\Http\Request;

public function logout(Request $request)
{
    $this->guard()->logout();

    $request->session()->invalidate();

    $request->session()->regenerateToken();

    session()->flash('flash_message', 'ログアウトしました');

    return $this->loggedOut($request) ?: redirect('/');
}

会員登録

会員登録はRegisterUsersトレイトで定義されているregisterメソッドをオーバーライドします。
やっていることとしてはログアウトと一緒です。
RegisterController.phpに以下を追記するだけ。


use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;

public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    session()->flash('flash_message', '会員登録が完了しました');

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}

おわりに

今まであまり目を通してこなかったトレイトをちゃんと確認したら、意外に簡単に実装できました✌️

コメントを残す