Filament Shield 搭建与使用指南
1. 项目目录结构及介绍
以下是基于 bezhanSalleh/filament-shield
开源项目的典型目录结构:
├── app
│ └── Http
│ └── Kernel.php # 应用Http中间件组
├── database
│ ├── migrations # 数据库迁移文件
└── config
└── filament-shield.php # Filament Shield 配置文件
-
app/Http/Kernel.php:此文件定义了你的应用使用的HTTP中间件。在安装 Shield 后,你可能需要在此处添加权限检查中间件。
-
database/migrations:包含用于创建权限和角色数据库表的迁移文件。
-
config/fruitcake/laravel-permission.php:这是
laravel-permission
包的配置文件,用来设置角色和权限的行为。 -
config/filament-shield.php:本项目独有的配置文件,用于定制 Shield 的行为,如角色名称、前缀等。
2. 项目的启动文件介绍
bezhanSalleh/filament-shield
并没有特定的启动文件,因为它的功能主要通过 Laravel 的服务提供者自动加载到 Laravel 应用中。然而,以下是关键组件的入口点:
-
在
config/app.php
的providers
数组中注册BezhanSalleh\FilamentShield\FilamentShieldServiceProvider::class
来启用该插件。 -
在
App\Models\User
类或你的自定义用户模型中,引入并使用Spatie\Permission\Traits\HasRoles
特性以实现角色和权限管理。 -
当你在 Filament 中创建面板时,调用
FilamentShieldPlugin::make()
来添加 Shield 支持。
3. 项目的配置文件介绍
config/fruitcake/laravel-permission.php 文件允许你定制 laravel-permission
包的行为。以下是几个重要的配置选项:
models
:定义你的用户模型,比如'model' => App\Models\User::class
。default_role_for_new_users
:新用户默认分配的角色,例如'default_role_for_new_users' => 'subscriber'
。column_names
:可以更改角色和权限的数据库列名。
而 config/filament-shield.php
文件则专门针对 Filament Shield:
role_names
:设定超级管理员和普通用户的角色名称,默认是'super_admin'
和'panel_user'
。permission_prefixes.resource
:预设资源的权限前缀列表,你可以在这里添加或删除权限。
要更新这些配置,只需运行 php artisan config:cache
以存储缓存的配置。
完成上述步骤后,你就可以利用 Filament Shield 管理 Filament 中页面、资源和小部件的访问控制了。记得执行必要的命令来安装和生成权限,例如 php artisan shield:install
。