Laravel.21 ログイン状態による制限(未)
前回、breezeでログインとユーザ登録まで確認。
メール認証してなくてもログインできてしまうが、機能は制限するつくり。
■ログイン時のセッション情報
ログイン後のセッション情報はSession:get('id')でセッションID取得などできるはずなのだが空文字。
■既存ページ+ログイン
掲示板ページの先頭に、認証済であればログアウトボタンを表示し、
認証していなければログインボタン、およびユーザ登録ボタンを表示するように修正
views\bbs\index.blade.php
@auth
<a href="{{ route('logout') }}">Log out</a>
@else
<a href="{{ route('login') }}" >Log in</a>
@if (Route::has('register'))
<a href="{{ route('register') }}" >Register</a>
@endif
@endauth
■ログアウト
ログアウトボタンを押下すると、
The GET method is not supported for this route. Supported methods: POST.
のエラー。
post関数の前にget関数を定義すると通るらしい。
今回はAuth.phpに
Route::get('logout', [AuthenticatedSessionController::class, 'destroy'])
->name('logout');
を追加。これでログアウトができて、
ログインボタンと登録ボタンが表示された。
■ログイン時に掲示板ページへ
ログインすると現状はdashboard画面に遷移する。
ログイン後は掲示板ページを表示したい。
さんざん探した結果、
app\Providers\RouteServiceProvider.php
-public const HOME = '/dashboard';
+public const HOME = '/thread';
で確認できた。
■メール認証の有無による制限
このままではメール認証してなくても書き込みができてしまうので、
userテーブルの「email_verified_at」に日時が設定されているかどうかで切り替えたい。
↑すごくかゆい所に手が届いてる感じがするんだけど、
いかんせん理解しきれない。。
続く。