Filament Shield 开源项目教程
项目介绍
Filament Shield 是一个为 Filament Admin 提供访问管理功能的插件,通过 spatie/laravel-permission
包实现。它提供了一种简单直观的方式来管理 Filament Admin 的资源、页面和部件的权限。
项目快速启动
安装
-
通过 Composer 安装包:
composer require bezhansalleh/filament-shield
-
在你的用户模型中添加
Spatie\Permission\Traits\HasRoles
特性:use Illuminate\Foundation\Auth\User as Authenticatable; use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { use HasRoles; }
-
发布配置文件并设置配置:
php artisan vendor:publish --tag=filament-shield-config
-
注册插件:
public function panel(Panel $panel): Panel { return $panel->plugins([ \BezhanSalleh\FilamentShield\FilamentShieldPlugin::make() ]); }
-
运行安装命令:
php artisan shield:install
配置
-
发布翻译文件:
php artisan vendor:publish --tag="filament-shield-translations"
-
生成权限和策略:
php artisan shield:generate --all
应用案例和最佳实践
默认权限
Filament Shield 默认处理 Filament 资源的预定义权限。如果你只需要这些权限,那么你已经设置好了。
自定义权限
如果你需要为所有资源添加一个自定义权限(例如 lock
),只需将其添加到配置键 permission_prefixes
中:
'permission_prefixes' => [
'resource' => [
'view', 'view_any', 'create', 'update', 'restore', 'restore_any', 'replicate', 'reorder', 'delete', 'delete_any', 'force_delete', 'force_delete_any', 'lock'
]
]
特定资源的权限
如果你需要为单个资源添加权限,可以使用自定义权限功能。
典型生态项目
Filament Shield 与 spatie/laravel-permission
包紧密集成,提供了强大的权限管理功能。此外,它还与 Filament Admin 的其他插件和扩展兼容,形成了一个完整的生态系统,支持复杂的后台管理系统开发。
通过以上步骤,你可以快速启动并使用 Filament Shield 项目,实现对 Filament Admin 的访问管理。