Inertiaを使用する場合、認証はアプリケーションの認証ポリシーでサーバーサイドで処理するのが最適です。ただし、フレームワークのサーバーサイドヘルパーにアクセスできないため、Inertiaページコンポーネント内から認証ポリシーに対してチェックを実行する方法について疑問に思うかもしれません。
この問題を解決する最も簡単な方法は、認証チェックの結果をpropsとしてページコンポーネントに渡すことです。
class UsersController extends Controller
{
public function index()
{
return Inertia::render('Users/Index', [
'can' => [
'create_user' => Auth::user()->can('create', User::class),
],
'users' => User::all()->map(function ($user) {
return [
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'email' => $user->email,
'can' => [
'edit_user' => Auth::user()->can('edit', $user),
]
];
}),
]);
}
}