mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 23:12:49 +08:00
122 lines
4.3 KiB
PHP
122 lines
4.3 KiB
PHP
|
|
<?php
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
use Fendx\Database\Seeder\Seeder;
|
||
|
|
use Fendx\Database\Connection\DB;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 角色权限关联种子数据
|
||
|
|
*/
|
||
|
|
class RolePermissionSeeder extends Seeder
|
||
|
|
{
|
||
|
|
public function run(): void
|
||
|
|
{
|
||
|
|
// 获取角色和权限ID
|
||
|
|
$roles = DB::table('roles')->pluck('id', 'name')->toArray();
|
||
|
|
$permissions = DB::table('permissions')->pluck('id', 'name')->toArray();
|
||
|
|
|
||
|
|
$rolePermissions = [];
|
||
|
|
|
||
|
|
// 超级管理员拥有所有权限
|
||
|
|
if (isset($roles['super_admin'])) {
|
||
|
|
foreach ($permissions as $permissionId) {
|
||
|
|
$rolePermissions[] = [
|
||
|
|
'role_id' => $roles['super_admin'],
|
||
|
|
'permission_id' => $permissionId,
|
||
|
|
'guard_name' => 'web',
|
||
|
|
'created_at' => date('Y-m-d H:i:s'),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 管理员权限(除了系统管理中的敏感权限)
|
||
|
|
if (isset($roles['admin'])) {
|
||
|
|
$adminPermissions = [
|
||
|
|
'user.list', 'user.create', 'user.edit', 'user.view',
|
||
|
|
'role.list', 'role.create', 'role.edit', 'role.assign',
|
||
|
|
'permission.list', 'permission.edit',
|
||
|
|
'content.list', 'content.create', 'content.edit', 'content.publish', 'content.audit',
|
||
|
|
'system.log', 'system.monitor',
|
||
|
|
'api.access', 'api.create', 'api.update',
|
||
|
|
];
|
||
|
|
|
||
|
|
foreach ($adminPermissions as $permissionName) {
|
||
|
|
if (isset($permissions[$permissionName])) {
|
||
|
|
$rolePermissions[] = [
|
||
|
|
'role_id' => $roles['admin'],
|
||
|
|
'permission_id' => $permissions[$permissionName],
|
||
|
|
'guard_name' => 'web',
|
||
|
|
'created_at' => date('Y-m-d H:i:s'),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 版主权限(内容管理相关)
|
||
|
|
if (isset($roles['moderator'])) {
|
||
|
|
$moderatorPermissions = [
|
||
|
|
'user.list', 'user.view',
|
||
|
|
'content.list', 'content.create', 'content.edit', 'content.audit',
|
||
|
|
'api.access',
|
||
|
|
];
|
||
|
|
|
||
|
|
foreach ($moderatorPermissions as $permissionName) {
|
||
|
|
if (isset($permissions[$permissionName])) {
|
||
|
|
$rolePermissions[] = [
|
||
|
|
'role_id' => $roles['moderator'],
|
||
|
|
'permission_id' => $permissions[$permissionName],
|
||
|
|
'guard_name' => 'web',
|
||
|
|
'created_at' => date('Y-m-d H:i:s'),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 普通用户权限(基础权限)
|
||
|
|
if (isset($roles['user'])) {
|
||
|
|
$userPermissions = [
|
||
|
|
'user.view', // 查看自己的信息
|
||
|
|
'content.list', 'content.create', 'content.edit', // 内容管理
|
||
|
|
'api.access', // API访问
|
||
|
|
];
|
||
|
|
|
||
|
|
foreach ($userPermissions as $permissionName) {
|
||
|
|
if (isset($permissions[$permissionName])) {
|
||
|
|
$rolePermissions[] = [
|
||
|
|
'role_id' => $roles['user'],
|
||
|
|
'permission_id' => $permissions[$permissionName],
|
||
|
|
'guard_name' => 'web',
|
||
|
|
'created_at' => date('Y-m-d H:i:s'),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 访客权限(最基础的权限)
|
||
|
|
if (isset($roles['guest'])) {
|
||
|
|
$guestPermissions = [
|
||
|
|
'content.list', // 查看公开内容
|
||
|
|
'api.access', // 基础API访问
|
||
|
|
];
|
||
|
|
|
||
|
|
foreach ($guestPermissions as $permissionName) {
|
||
|
|
if (isset($permissions[$permissionName])) {
|
||
|
|
$rolePermissions[] = [
|
||
|
|
'role_id' => $roles['guest'],
|
||
|
|
'permission_id' => $permissions[$permissionName],
|
||
|
|
'guard_name' => 'web',
|
||
|
|
'created_at' => date('Y-m-d H:i:s'),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// 批量插入角色权限关联
|
||
|
|
if (!empty($rolePermissions)) {
|
||
|
|
DB::table('role_permissions')->insert($rolePermissions);
|
||
|
|
}
|
||
|
|
|
||
|
|
$this->command->info('角色权限关联种子数据插入完成');
|
||
|
|
}
|
||
|
|
}
|