vyuldashev/nova-permission
Fork: 218 Star: 419 (更新于 2024-12-15 12:06:14)
license: 暂无
Language: PHP .
A Laravel Nova tool for Spatie's laravel-permission library
最后发布版本: v2.7.0 ( 2020-03-31 02:11:48)
A Laravel Nova tool for Spatie's laravel-permission library
Installation
You can install the package in to a Laravel app that uses Nova via composer:
composer require vyuldashev/nova-permission
Go through the Installation section in order to setup laravel-permission.
Next up, you must register the tool with Nova. This is typically done in the tools
method of the NovaServiceProvider
.
// in app/Providers/NovaServiceProvider.php
// ...
public function tools()
{
return [
// ...
\Vyuldashev\NovaPermission\NovaPermissionTool::make(),
];
}
Next, add middleware to config/nova.php
// in config/nova.php
'middleware' => [
// ...
\Vyuldashev\NovaPermission\ForgetCachedPermissions::class,
],
Finally, add MorphToMany
fields to you app/Nova/User
resource:
// ...
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),
];
}
Or if you want to attach multiple permissions at once, use RoleBooleanGroup
and PermissionBooleanGroup
fields (requires at least Nova 2.6.0):
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleBooleanGroup;
public function fields(Request $request)
{
return [
// ...
RoleBooleanGroup::make('Roles'),
PermissionBooleanGroup::make('Permissions'),
];
}
If your User
could have a single role at any given time, you can use RoleSelect
field. This field will render a standard select where you can pick a single role from.
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleSelect;
public function fields(Request $request)
{
return [
// ...
RoleSelect::make('Role', 'roles'),
];
}
Customization
If you want to use custom resource classes you can define them when you register a tool:
// in app/Providers/NovaServiceProvider.php
// ...
public function tools()
{
return [
// ...
\Vyuldashev\NovaPermission\NovaPermissionTool::make()
->roleResource(CustomRole::class)
->permissionResource(CustomPermission::class),
];
}
If you want to show your roles and policies with a custom label, you can set $labelAttribute
when instantiating your fields:
// ...
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'),
];
}
Define Policies
// in app/Providers/NovaServiceProvider.php
// ...
public function tools()
{
return [
// ...
\Vyuldashev\NovaPermission\NovaPermissionTool::make()
->rolePolicy(RolePolicy::class)
->permissionPolicy(PermissionPolicy::class),
];
}
Usage
A new menu item called "Permissions & Roles" will appear in your Nova app after installing this package.
主题(topics):
acl, laravel, nova, permission, php, secure, spatie
vyuldashev/nova-permission同语言 PHP最近更新仓库
2024-12-13 19:38:03 coollabsio/coolify
2024-12-13 09:22:46 w7corp/easywechat
2024-12-11 20:15:22 symfony/symfony
2024-11-29 16:49:37 symfony/var-dumper
2024-11-20 23:58:25 laravel/framework
2024-11-20 18:39:23 danielmiessler/SecLists