luilliarcec / filament-shield
`spatie/laravel-permission` 的丝材支持。
2.2.0
2022-11-03 15:27 UTC
Requires
- php: ^8.0|^8.1
- filament/filament: ^2.0
- illuminate/contracts: ^8.0|^9.0
- spatie/laravel-package-tools: ^1.9.2
- spatie/laravel-permission: ^5.0
Requires (Dev)
- nunomaduro/collision: ^5.0|^6.0
- orchestra/testbench: ^6.0|^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpunit/phpunit: ^9.5
README
将访问管理添加到您的 Filament Admin 的最简单、最直观的方式
- 🔥 资源
- 🔥 页面
- 🔥 小部件
从 bezhanSalleh/filament-shield 分支而来
支持 Filament
安装
通过 composer 安装包
composer require luilliarcec/filament-shield
使用以下命令发布配置文件
php artisan vendor:publish --tag="filament-shield-config"
配置您的选项
<?php return [ /* * Predefined resource to handle system roles, you can replace it with your own. */ 'resources' => [ 'role' => Resources\RoleResource::class ], /* * System roles, enable them to your liking. */ 'roles' => [ 'super_admin' => [ 'enabled' => true, 'role_name' => 'super_admin', ], 'filament_user' => [ 'enabled' => false, 'role_name' => 'filament_user', ], ], /** * Default global permissions are defined here, however you are free to change * them from your filament `resource`, `page` or `widget`. */ 'suffixes' => [ 'resource' => [ 'view_any', 'view', 'create', 'update', 'delete', 'delete_any', 'restore', ], 'page' => 'view', 'widget' => 'view', ], /** * The package uses a wildcard format with "-" instead of dots, due to the representation of objects * that livewire gives you, when using this format, the package discovers the segments * from the namespace of the filament `resource`, `page` or `widget`. * * {module}.{resource}.{action} => {module}-{resource}-{action} * * Filament * - Resources * - Security * - RoleResource.php * * App\Filament\Resources\Security\RoleResource * * Ex.: security-role-view_any */ 'dont_modules' => [ 'src', 'domain', 'manages', 'app', 'filament', 'resources', 'pages', 'widgets', ] ];
将 Spatie\Permission\Traits\HasRoles
特性添加到您的用户模型中
use Illuminate\Foundation\Auth\User as Authenticatable; use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { use HasRoles; // ... }
如果您想生成权限以及策略,请使用以下命令
php artisan shield:generate
该包足够智能,可以在与 filament 资源关联的模型相同的命名空间中生成策略。
为了使用此包,每个 resource
、page
或 widget
必须实现以下合约。
Luilliarcec\FilamentShield\Contracts\HasPermissions
use Filament\Resources\Resource; use Luilliarcec\FilamentShield\Contracts\HasPermissions; class RoleResource extends Resource implements HasPermissions { // }
您必须实现每个方法,或者如果您喜欢,可以为每个案例(resource
、page
或 `widget)使用特性。
use Filament\Resources\Resource; use Luilliarcec\FilamentShield\Contracts\HasPermissions use Luilliarcec\FilamentShield\Concerns\HasResourcePermissions; class RoleResource extends Resource implements HasPermissions { use HasResourcePermissions; }
如果您想为生成资源添加或删除权限,可以重写权限方法。
use Filament\Resources\Resource; use Luilliarcec\FilamentShield\Contracts\HasPermissions; use Luilliarcec\FilamentShield\Concerns\HasResourcePermissions; class RoleResource extends Resource implements HasPermissions { use HasResourcePermissions; // public static function permissions(): array|string { return [ 'view_any', 'export' ]; } }
现在这个资源将只有两个权限。
变更日志
请参阅 CHANGELOG 了解最近更改的信息。
贡献
如果您想为这些包做出贡献,您可能想在真实的 Filament 项目中测试它
- 将此仓库分支到您的 GitHub 账户
- 在本地创建 Filament 应用
- 在 Filament 应用根目录中克隆您的分支
- 在
/filament-shield
目录中,为您的修复创建一个分支,例如fix/error-message
。
在您的应用的 composer.json
中安装包
致谢
许可协议
MIT 许可协议 (MIT)。请参阅 许可文件 了解更多信息。