如何在Laravel中动态添加门? 我在laravel上构建了CMS,它支持插件。插件可以在仪表板,某些页面,路线等中添加菜单项。例如,我需要使用gate来保护编辑/删除/添加/更改页面,例如授权用户未创建的页面。 因此,我需要每个插件都可以动态添加此权限(查看/ add / edit / update / delete /) 我该怎么做? 并且btw插件位于APP / Plugins文件夹中。 管理员可以将此权限附加到某些角色http://prntscr.com/kidnxz https://pastecode.xyz/view/bcb9d00f这是我的示例表。 我还需要在权限表权限中添加的问题 我使用laravel 5.6
这里是简单插件的示例pastecode.xyz/view/75d2fa28加载插件时调用启动,并在用户激活该插件时onActivate
我正在寻找动态策略
或类似https://octobercms.com/docs/plugin/registration
'permissions' => ['acme.blog.*'],
答案 0 :(得分:0)
您可以使用Gate::policy(PolicyTarget::class, PolicyImplementation::class)
在插件中注册新的登门策略。
假设您有一个政策目标,例如一个用户(也许是一个不好的例子)。
使用php artisan make:policy UserInteractsWithBlogPolicy
class UserInteractsWithBlogPolicy {
// Boilerplate and custom code
}
然后您可以在插件启动时进行注册:
public function boot() {
// TODO: Implement boot() method.
$this->enableRoutes();
$this->enableViews();
\Gate::policy(User::class, UserInteractsWithBlogPolicy::class);
}
然后,您可以使用常规策略规则,例如
$user->can("view", Blog::find(1));
或者基本上可以按照https://laravel.com/docs/5.6/authorization#authorizing-actions-using-policies
做任何事情