6

Laravel 8でLaravel JetStreamとSpatieのlaravel-permissionの基本的なインストールがうまく機能しています。

登録時にユーザーにロールを割り当てることができます

$user->assignRole('visitor');
return $user;

また、シーダー ファイルの run メソッドでロールに割り当てたアクセス許可を使用して、ユーザーのダッシュボードで使用可能なメニュー項目を制限できます。

Permission::create(['name' => 'access profile']);
Permission::create(['name' => 'access logout']);

$visitor = Role::create(['name' => 'visitor']);
$visitor->givePermissionTo('access profile');

次のように、ビューの can ディレクティブを使用します。

@can('access profile')
<!-- Account Management -->
<div class="block px-4 py-2 text-xs text-gray-400">
    {{ __('Manage Account') }}
</div>

<x-jet-dropdown-link href="{{ route('profile.show') }}">
    {{ __('Profile') }}
</x-jet-dropdown-link>
@endcan

そのため、ロールごとにメニュー項目を非表示にすることができますが、残念ながら、正確な URL を知っていれば、機能に直接アクセスできます。

特定の機能へのアクセスを制限するミドルウェアを作成する必要があると思いますが、具体的にはどうすればよいでしょうか?

このスタックでこの問題を処理するための適切で受け入れられている方法は何ですか?

ありがとう!アルマン だから、すべてがうまくいくようですが (!)

非表示のアイテムへの直接アクセスを禁止するにはどうすればよいですか? この場合、ルートは sanctum によって制御され、役割と権限は Spatie のパッケージによって制御されると思います。

2つをリンクすることは可能ですか?

ありがとう!

4

2 に答える 2