🦀
laravel5.8¦404エラーページでログインユーザー可否を判定して表示をわける方法
実装したいこと
・404エラーページでログインユーザーか判定して、表示を分けたい
環境
・laravel 5.8
・php 7.2
概要
ログインユーザーか判定したいので、Authファサード
を使いたいところなのです...が!
初心者なので知らなかったのですが、エラービューではセッションにアクセスできず、基本的にミドルウェアは実行されないようです…
Auth::check()
で判定できるかと思いきやログイン可否に関わらずfalse
になってしまいました。
調べてみたところ、laravel5.5からfallback route機能が追加されたので、これを使ってみます🎩
404ファイルはerrorsディレクトリに作成
laravel
├─ resources
│ ├─ views
│ │ ├─ errors
│ │ │ └─ 404.blade.php
実装
web.phpにfallback routeを追記
Route::fallback(function() {
return response()->view('errors.404', [], 404);
});
404ページを修正
Auth::check()
が使えるようになったのですが、わかりやすくディレクティブを使っていきたいと思います。
<body>
<div class="flex-center position-ref full-height">
<div class="content">
<div class="title">
お探しのページが見つかりませんでした。
@auth
<a href="{{ url()->previous() }}">戻る</a>
@endauth
@guest
<a href="{{ route('login') }}">ログインページへ</a>
@endguest
</div>
</div>
</div>
</body>
無事にログインしているか、していないかでリンクの出し分けをすることができました◎
ログインユーザーの場合はケバブメニューが右上に表示される仕様だったのですが、fallback routeを設定するとケバブメニューも表示されるようになっていました🥙 すごい。。。
Discussion