Laravel10 他の登場人物のログイン状態を取得して表示を制御する方法

システム管理者(admin)と店舗管理者(shop)という2つの異なる権限を持つ登場人物に対して、システム管理者がログインした状態で店舗管理者用のページを表示した場合に特別な項目を追加表示する方法について解説します。

config/auth.phpの設定

'guards' => [
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
    'shop' => [
        'driver' => 'session',
        'provider' => 'shops',
    ],
    // 他のガード設定
],
'providers' => [
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
    'shops' => [
        'driver' => 'eloquent',
        'model' => App\Models\Shop::class,
    ],
    // 他のプロバイダ設定
],

ルーティング(routes/web.php)の設定

Route::group(['middleware' => ['auth:admin']], function() {
    // システム管理者用のルート
});

Route::group(['middleware' => ['auth:shop']], function() {
    // 店舗管理者用のルート
});

システム管理者用の項目を追加表示

Auth::guard(‘admin’)->check()を利用して、システム管理者がログインしているかを確認して表示の制御をします。

{{-- 店舗管理者用の項目 --}}
<div>
    <p>店舗管理者用の情報</p>
</div>

{{-- システム管理者専用(システム管理者がログイン済みの場合のみ表示)の項目 --}}
@if(Auth::guard('admin')->check())
<div>
    <p>システム管理者用の特別な情報</p>
</div>
@endif

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です