【发布时间】:2019-02-16 11:03:00
【问题描述】:
我安装了 Spatie Permissions 包,并创建了策略来限制使用此包的模型的访问权限。
但是,我在创建一个门以启用某些角色(例如“管理员”和“内容编辑器”)访问 Nova 仪表板时遇到了一些困难?
我认为它会涉及 NovaServiceProvider 中的 gate() 函数。这是我尝试过的。
protected function gate()
{
Gate::define('viewNova', function ($user) {
if ($user->hasRole('Admin') || $user->hasRole('Content Editor'))
{
return true;
}
});
}
【问题讨论】:
-
您是否在本地环境中对此进行了测试?
-
不,我想在生产环境中实现它,以便其他用户可以访问 Nova。
-
我的意思是,您是否在本地环境中测试您提供的代码?
-
所以其他 cmets 试图得到的是如果您的环境是“本地”的,那么 gate() 函数将被忽略。我不确定做出这种选择的原因是什么,但它确实使使用 Nova 测试身份验证变得困难。
-
@orrd - 解决方法是覆盖 APP_ENV 作为测试的一部分。对于 PHPUnit,这是在
phpunit.xml,对于 Dusk,这是在.env.dusk.local。
标签: laravel permissions authorization laravel-nova laravel-permission