Files
KnowledgeBase/database/seeders/PermissionSeeder.php
T
lizhuoran b3f319fc48 refactor(权限): 统一权限命名规范并精简权限数量
- 移除冗余的 viewAny 权限,统一使用 view 权限
- 简化权限描述,去掉「列表」和「详情」的区分
- 权限数量从 45 个精简到 32 个
- 更新 RolePolicy 使用统一的 role.view 权限
- 创建迁移脚本自动更新现有权限并合并关联
- 验证所有角色权限分配正确(super-admin: 32, admin: 28, user: 6)
2026-03-12 13:15:17 +08:00

186 lines
5.0 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class PermissionSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// 重置缓存的角色和权限
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
// 定义所有权限
$permissions = [
// 文档管理权限
'document.view' => '查看文档',
'document.create' => '创建文档',
'document.update' => '编辑文档',
'document.delete' => '删除文档',
'document.download' => '下载文档',
// 系统设置权限
'system-setting.view' => '查看系统设置',
'system-setting.update' => '修改系统设置',
// 操作日志权限
'activity-log.view' => '查看操作日志',
'activity-log.export' => '导出日志',
// 终端管理权限
'terminal.view' => '查看终端',
'terminal.create' => '创建终端',
'terminal.update' => '编辑终端',
'terminal.delete' => '删除终端',
'terminal.sync' => '同步终端配置',
// SOP模板权限
'sop-template.view' => '查看SOP模板',
'sop-template.create' => '创建SOP',
'sop-template.update' => '编辑SOP',
'sop-template.delete' => '删除SOP',
'sop-template.publish' => '发布SOP',
'sop-template.archive' => '归档SOP',
// 分组管理权限
'group.view' => '查看分组',
'group.create' => '创建分组',
'group.update' => '编辑分组',
'group.delete' => '删除分组',
// 用户管理权限
'user.view' => '查看用户',
'user.create' => '创建用户',
'user.update' => '编辑用户',
'user.delete' => '删除用户',
// 角色管理权限
'role.view' => '查看角色',
'role.create' => '创建角色',
'role.update' => '编辑角色',
'role.delete' => '删除角色',
];
// 创建所有权限
foreach ($permissions as $name => $description) {
Permission::create([
'name' => $name,
'guard_name' => 'web',
]);
}
// 创建角色并分配权限
$this->createSuperAdminRole();
$this->createAdminRole();
$this->createUserRole();
}
/**
* 创建超级管理员角色
*/
private function createSuperAdminRole(): void
{
$role = Role::create([
'name' => 'super-admin',
'guard_name' => 'web',
]);
// 超级管理员拥有所有权限
$role->givePermissionTo(Permission::all());
}
/**
* 创建管理员角色
*/
private function createAdminRole(): void
{
$role = Role::create([
'name' => 'admin',
'guard_name' => 'web',
]);
// 管理员权限(除了角色管理)
$permissions = [
// 文档管理
'document.view',
'document.create',
'document.update',
'document.delete',
'document.download',
// 系统设置
'system-setting.view',
'system-setting.update',
// 操作日志
'activity-log.view',
'activity-log.export',
// 终端管理
'terminal.view',
'terminal.create',
'terminal.update',
'terminal.delete',
'terminal.sync',
// SOP模板
'sop-template.view',
'sop-template.create',
'sop-template.update',
'sop-template.delete',
'sop-template.publish',
'sop-template.archive',
// 分组管理
'group.view',
'group.create',
'group.update',
'group.delete',
// 用户管理
'user.view',
'user.create',
'user.update',
'user.delete',
];
$role->givePermissionTo($permissions);
}
/**
* 创建普通用户角色
*/
private function createUserRole(): void
{
$role = Role::create([
'name' => 'user',
'guard_name' => 'web',
]);
// 普通用户权限(基本查看和操作)
$permissions = [
// 文档管理
'document.view',
'document.create',
'document.download',
// 终端管理(仅查看)
'terminal.view',
// SOP模板(仅查看)
'sop-template.view',
// 分组管理(仅查看)
'group.view',
];
$role->givePermissionTo($permissions);
}
}