4
0
Fork 0
dcat-admin/packages/keywords/updates/KeywordsTableSeeder.php

57 lines
2.1 KiB
PHP

<?php
use Dcat\Admin\Models\Permission;
use Illuminate\Database\Seeder;
class KeywordsTableSeeder extends Seeder
{
public function run()
{
// 添加权限
$permissions = [
'keywords' => ['name' => '字典管理', 'curd' => true]
];
// Permission::where('slug', 'like', 'dcat.admin.keywords%')->delete();
$this->createPermissionData($permissions);
}
protected function createPermissionData(array $permissions, string $key = '', int $pId = 0)
{
$curdArr = [
'index' => '列表',
'create' => '新增',
'edit' => '修改',
'destroy' => '删除',
'show' => '详情',
];
foreach ($permissions as $slug => $permission) {
//是否已存在该权限
$slugKey = 'dcat.admin.' . ($key ? $key . '.' . $slug : $slug);
$pper = Permission::updateOrCreate(['slug' => $slugKey], ['name' => is_string($permission) ? $permission : $permission['name'], 'parent_id' => $pId]);
if (!is_string($permission)) {
if (!isset($permission['children'])) {
$permission['children'] = [];
}
//判断是否默认插入curd权限
if (isset($permission['curd']) && $permission['curd']) {
if (is_array($permission['curd'])) {
$permission['curd'] = array_reverse($permission['curd']);
foreach ($permission['curd'] as $value) {
$permission['children'] = array_merge([$value => $curdArr[$value]], $permission['children']);
}
} else {
$permission['children'] = array_merge($curdArr, $permission['children']);
}
}
if (count($permission['children']) > 0) {
$_key = $permission['curd'] !== false ? ($key ? $key . '.' . $slug : $slug) : $key;
$this->createPermissionData($permission['children'], $_key ?? $slug, $pper->id);
}
}
}
}
}