如何向我的 livewire Volt::route('/product/{id}') 添加策略检查?

问题描述 投票:0回答:1

我想知道是否可以向我的 Volt::route() 添加策略检查。我知道我可以添加

$this->authorize('view', $product);

在我的 mount() 方法中,但我认为将它放在路由文件中会更干净。

Volt::route('/product/{id}', 'pages.shop.single-product-page')
  ->name('single-product-page');

我知道有一个 can() 方法,但我不知道如何将产品作为参数传递给我的 can() 检查。

产品政策:

   /**
     * Determine whether the user can view the model.
     */
    public function view(User $user, Product $product): bool
    {
        return $user->tenant->id == $product->tenant->id;
    }

谢谢

laravel-livewire livewire-3
1个回答
0
投票

您可以通过中间件来完成此操作。默认情况下,为 Illuminate\Auth\Middleware\Authorize 中间件分配了

can
类中的
App\Http\Kernel
键。 :

Volt::route('/product/{product}', 'pages.shop.single-product-page')->name('single-product-page')->middleware('can:view,product');

您还可以使用助手

can
方法:

Volt::route('/product/{product}', 'pages.shop.single-product-page')->name('single-product-page')->can('view','product');

对于不需要模型实例的策略方法,您可以执行以下操作:

use App\Models\Product;
     
Volt::route('/product/{product}', 'pages.shop.single-product-page')->name('single-product-page')->can('view', Product::class);

Laravel 文档

© www.soinside.com 2019 - 2024. All rights reserved.