concept24 / nova-permission
这是一个用于Spatie权限库的Laravel Nova工具。
2.0.2
2024-09-24 07:32 UTC
Requires
- php: ^7.4|^8.0
- laravel/nova: ^4.0
- spatie/laravel-permission: ^3.0|^4.0|^5.0|^6.0
This package is auto-updated.
Last update: 2024-09-24 07:33:16 UTC
README
安装
您可以通过Composer将此包安装到使用Nova的Laravel应用中。
composer require vyuldashev/nova-permission
请参阅安装部分以设置laravel-permission。
接下来,您必须将工具注册到Nova中。这通常在NovaServiceProvider
的tools
方法中完成。
// in app/Providers/NovaServiceProvider.php
// ...
public function tools()
{
return [
// ...
\Vyuldashev\NovaPermission\NovaPermissionTool::make(),
];
}
接下来,将中间件添加到config/nova.php
// in config/nova.php
'middleware' => [
// ...
\Vyuldashev\NovaPermission\ForgetCachedPermissions::class,
],
最后,将MorphToMany
字段添加到您的app/Nova/User
资源中
// ...
use Laravel\Nova\Fields\MorphToMany;
public function fields(Request $request)
{
return [
// ...
MorphToMany::make('Roles', 'roles', \Vyuldashev\NovaPermission\Role::class),
MorphToMany::make('Permissions', 'permissions', \Vyuldashev\NovaPermission\Permission::class),
];
}
或者,如果您想一次性添加多个权限,请使用RoleBooleanGroup
和PermissionBooleanGroup
字段(需要至少Nova 2.6.0版本)
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleBooleanGroup;
public function fields(Request $request)
{
return [
// ...
RoleBooleanGroup::make('Roles'),
PermissionBooleanGroup::make('Permissions'),
];
}
如果您的User
可以在任何时候只有一个角色,您可以使用RoleSelect
字段。此字段将渲染一个标准下拉菜单,您可以从中选择单个角色。
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleSelect;
public function fields(Request $request)
{
return [
// ...
RoleSelect::make('Role', 'roles'),
];
}
自定义
如果您想使用自定义资源类,可以在注册工具时定义它们
// in app/Providers/NovaServiceProvider.php
// ...
public function tools()
{
return [
// ...
\Vyuldashev\NovaPermission\NovaPermissionTool::make()
->roleResource(CustomRole::class)
->permissionResource(CustomPermission::class),
];
}
如果您想使用自定义标签显示您的角色和策略,可以在实例化字段时设置$labelAttribute
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleSelect;
public function fields(Request $request)
{
return [
// ...
RoleBooleanGroup::make('Roles', 'roles', null, 'description'),
PermissionBooleanGroup::make('Permissions', 'permissions', null, 'description'),
RoleSelect::make('Role', 'roles', null, 'description'),
];
}
定义策略
// in app/Providers/NovaServiceProvider.php
// ...
public function tools()
{
return [
// ...
\Vyuldashev\NovaPermission\NovaPermissionTool::make()
->rolePolicy(RolePolicy::class)
->permissionPolicy(PermissionPolicy::class),
];
}
用法
安装此包后,在您的Nova应用中会出现一个名为“权限 & 角色”的新菜单项。