yadahan / nova-bouncer
A Laravel Nova 工具,用于管理 Bouncer 角色和能力。
v2.0.1
2022-05-29 18:06 UTC
Requires
- php: ^7.3|^8.0
- laravel/nova: ^4.0
- silber/bouncer: ^1.0
README
利用 Bouncer 的力量,在你的 Nova 管理面板中进行管理。
安装
注意
Nova Bouncer 需要 laravel/nova ^4.0 和 silber/bouncer ^1.0。
您可以使用 Composer 将 Nova Bouncer 安装到您的 Laravel 项目中
composer require yadahan/nova-bouncer
配置
安装 Nova Bouncer 后,您需要在 app/Providers/NovaServiceProvder.php
文件中将工具注册到 Nova 中
public function tools() { return [ // ... new \Yadahan\BouncerTool\BouncerTool, ]; }
接下来,将 MorphToMany
字段添加到您的 app/Nova/User.php
文件中的用户资源
use Laravel\Nova\Fields\MorphToMany; use Laravel\Nova\Fields\Text; public function fields(Request $request) { return [ // ... MorphToMany::make('Roles', 'roles', 'Yadahan\BouncerTool\Nova\Role')->fields(function () { return [ Text::make('Scope') ->sortable() ->rules('nullable', 'integer'), ]; }), MorphToMany::make('Abilities', 'abilities', 'Yadahan\BouncerTool\Nova\Ability') ->fields(new \Yadahan\BouncerTool\Nova\PermissionsFields), ]; }
最后,使用 vendor:publish
Artisan 命令发布 Nova Bouncer 配置
php artisan vendor:publish --provider="Yadahan\BouncerTool\BouncerToolServiceProvider"
发布配置后,您可以在 config/bouncer-tool.php
文件中定义您要管理的模型和能力
'actions' => [ '*' => 'Manage', 'viewAny' => 'View Any', 'view' => 'View', 'create' => 'Create', 'update' => 'Update', 'replicate' => 'Replicate', 'delete' => 'Delete', 'restore' => 'Restore', 'forceDelete' => 'Force Delete', 'runAction' => 'Run Action', 'runDestructiveAction' => 'Run Destructive Action', ], 'entities' => [ 'User' => App\Models\User::class, ],
基本用法
您的 Nova 导航菜单中会出现一个新的部分(Bouncer)。
警告
只有有权管理 Bouncer 模型的用户才能看到此导航部分。
您可以赋予用户或角色管理 Bouncer 模型的权限
$user = User::find(1); Bouncer::allow($user)->toManage(\Silber\Bouncer\Database\Role::class); Bouncer::allow($user)->toManage(\Silber\Bouncer\Database\Ability::class); // or $role = Bouncer::role()->create(['name' => 'manage-bouncer']); Bouncer::allow($role)->toManage(\Silber\Bouncer\Database\Role::class); Bouncer::allow($role)->toManage(\Silber\Bouncer\Database\Ability::class); $user->assign($role);
Laravel 授权
https://laravel.net.cn/docs/authorization#creating-policies
生成策略
您可以使用 make:policy
Artisan 命令生成策略
php artisan make:policy UserPolicy --model=User
贡献
感谢您考虑为 Nova Bouncer 贡献。
许可协议
Nova Bouncer 是开源软件,许可协议为 MIT 许可证。