如何创建 Laravel Nova Gate/Policy 来限制对 Nova 工具的访问?

How to create a Laravel Nova Gate/Policy to restrict access to Nova tools?

如何创建 policy/gate 来限制用户访问 Nova 工具(例如 Spatie Nova Backup Tool)?

我遇到了同样的问题,我是这样解决的。

  1. 转到NovaServiceProvider
  2. tools()方法中添加一个gate/check

    public function tools()
    
    {
    
        if (Auth::user()->hasAnyRole(['admin'])) {
            return [new Foo, new Bar];
        }
    
        return [];
    }
    

这将解决问题,但我不确定这是否是 Nova 的解决方法。

"Nova way" 执行此操作将使用 canSee() 方法。你可以阅读它 here.

public function tools()
{
    return [
        YourToolThatMightBeHidden::make()
            ->canSee(function ($request) {
                return $request->user()->can('access-this-tool');
            }),
    ];
}