EGO-LOG

40代2児の父。主にプログラム学習と開発、仮想通貨、メタバース、たまに関係ないことを綴る。

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

f:id:tenomeuonome:20220410001240p:plain



■ログアウト

ログアウトボタンを押下すると、

The GET method is not supported for this route. Supported methods: POST.

のエラー。

qiita.com

post関数の前にget関数を定義すると通るらしい。

今回はAuth.php

Route::get('logout', [AuthenticatedSessionController::class, 'destroy'])
                ->name('logout');

を追加。これでログアウトができて、

f:id:tenomeuonome:20220410001357p:plain

ログインボタンと登録ボタンが表示された。

 

■ログイン時に掲示板ページへ

ログインすると現状はdashboard画面に遷移する。

ログイン後は掲示板ページを表示したい。

さんざん探した結果、

app\Providers\RouteServiceProvider.php

-public const HOME = '/dashboard';

+public const HOME = '/thread';

で確認できた。

 

■メール認証の有無による制限

このままではメール認証してなくても書き込みができてしまうので、

userテーブルの「email_verified_at」に日時が設定されているかどうかで切り替えたい。

qiita.com

↑すごくかゆい所に手が届いてる感じがするんだけど、

いかんせん理解しきれない。。

 

 

続く。