feat(权限): 安装和配置 Spatie Permission 包
- 安装 spatie/laravel-permission 包(v6.24.1) - 发布配置文件和迁移文件 - 运行迁移创建权限表 - 在 User 模型中添加 HasRoles trait - 添加 isSuperAdmin 和 isAdmin 辅助方法 - 创建 PermissionSeeder 定义 45 个权限 - 创建 3 个预设角色(super-admin、admin、user) - 为角色分配相应权限 - 为第一个用户分配超级管理员角色
This commit is contained in:
204
database/seeders/PermissionSeeder.php
Normal file
204
database/seeders/PermissionSeeder.php
Normal file
@@ -0,0 +1,204 @@
|
||||
<?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.viewAny' => '查看文档列表',
|
||||
'document.view' => '查看文档详情',
|
||||
'document.create' => '创建文档',
|
||||
'document.update' => '编辑文档',
|
||||
'document.delete' => '删除文档',
|
||||
'document.download' => '下载文档',
|
||||
|
||||
// 系统设置权限
|
||||
'system-setting.viewAny' => '查看系统设置',
|
||||
'system-setting.view' => '查看设置详情',
|
||||
'system-setting.update' => '修改系统设置',
|
||||
|
||||
// 操作日志权限
|
||||
'activity-log.viewAny' => '查看操作日志',
|
||||
'activity-log.view' => '查看日志详情',
|
||||
'activity-log.export' => '导出日志',
|
||||
|
||||
// 终端管理权限
|
||||
'terminal.viewAny' => '查看终端列表',
|
||||
'terminal.view' => '查看终端详情',
|
||||
'terminal.create' => '创建终端',
|
||||
'terminal.update' => '编辑终端',
|
||||
'terminal.delete' => '删除终端',
|
||||
'terminal.sync' => '同步终端配置',
|
||||
|
||||
// SOP模板权限
|
||||
'sop-template.viewAny' => '查看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.viewAny' => '查看分组列表',
|
||||
'group.view' => '查看分组详情',
|
||||
'group.create' => '创建分组',
|
||||
'group.update' => '编辑分组',
|
||||
'group.delete' => '删除分组',
|
||||
|
||||
// 用户管理权限
|
||||
'user.viewAny' => '查看用户列表',
|
||||
'user.view' => '查看用户详情',
|
||||
'user.create' => '创建用户',
|
||||
'user.update' => '编辑用户',
|
||||
'user.delete' => '删除用户',
|
||||
|
||||
// 角色管理权限
|
||||
'role.viewAny' => '查看角色列表',
|
||||
'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.viewAny',
|
||||
'document.view',
|
||||
'document.create',
|
||||
'document.update',
|
||||
'document.delete',
|
||||
'document.download',
|
||||
|
||||
// 系统设置
|
||||
'system-setting.viewAny',
|
||||
'system-setting.view',
|
||||
'system-setting.update',
|
||||
|
||||
// 操作日志
|
||||
'activity-log.viewAny',
|
||||
'activity-log.view',
|
||||
'activity-log.export',
|
||||
|
||||
// 终端管理
|
||||
'terminal.viewAny',
|
||||
'terminal.view',
|
||||
'terminal.create',
|
||||
'terminal.update',
|
||||
'terminal.delete',
|
||||
'terminal.sync',
|
||||
|
||||
// SOP模板
|
||||
'sop-template.viewAny',
|
||||
'sop-template.view',
|
||||
'sop-template.create',
|
||||
'sop-template.update',
|
||||
'sop-template.delete',
|
||||
'sop-template.publish',
|
||||
'sop-template.archive',
|
||||
|
||||
// 分组管理
|
||||
'group.viewAny',
|
||||
'group.view',
|
||||
'group.create',
|
||||
'group.update',
|
||||
'group.delete',
|
||||
|
||||
// 用户管理
|
||||
'user.viewAny',
|
||||
'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.viewAny',
|
||||
'document.view',
|
||||
'document.create',
|
||||
'document.download',
|
||||
|
||||
// 终端管理(仅查看)
|
||||
'terminal.viewAny',
|
||||
'terminal.view',
|
||||
|
||||
// SOP模板(仅查看)
|
||||
'sop-template.viewAny',
|
||||
'sop-template.view',
|
||||
|
||||
// 分组管理(仅查看)
|
||||
'group.viewAny',
|
||||
'group.view',
|
||||
];
|
||||
|
||||
$role->givePermissionTo($permissions);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user