183 lines
4.8 KiB
PHP
183 lines
4.8 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' => '删除终端',
|
|
// 操作指引权限
|
|
'guide.view' => '查看指引',
|
|
'guide.create' => '创建指引',
|
|
'guide.update' => '编辑指引',
|
|
'guide.delete' => '删除指引',
|
|
'guide.publish' => '发布指引',
|
|
'guide.archive' => '归档指引',
|
|
|
|
// 线站管理权限
|
|
'station.view' => '查看线站',
|
|
'station.create' => '创建线站',
|
|
'station.update' => '编辑线站',
|
|
'station.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',
|
|
|
|
// 线站管理
|
|
'station.view',
|
|
'station.create',
|
|
'station.update',
|
|
'station.delete',
|
|
|
|
// 操作指引
|
|
'guide.view',
|
|
'guide.create',
|
|
'guide.update',
|
|
'guide.delete',
|
|
'guide.publish',
|
|
'guide.archive',
|
|
|
|
// 用户管理
|
|
'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',
|
|
|
|
// 线站查看
|
|
'station.view',
|
|
|
|
// 操作指引查看
|
|
'guide.view',
|
|
];
|
|
|
|
$role->givePermissionTo($permissions);
|
|
}
|
|
}
|