129 lines
4.0 KiB
PHP
129 lines
4.0 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use Dcat\Admin\Models\Permission;
|
||
use Illuminate\Database\Seeder;
|
||
use Illuminate\Support\Facades\DB;
|
||
use Illuminate\Support\Facades\Log;
|
||
|
||
class AdminPermissionSeeder extends Seeder
|
||
{
|
||
/**
|
||
* Run the database seeds.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function run()
|
||
{
|
||
//
|
||
$permissions = [
|
||
/** 示例 **/
|
||
// 'test'=> [
|
||
// 'name' => '测试权限',
|
||
// 'curd' => true, //true默认全部,false为不需要, ['index']为仅需要的
|
||
// 'children' => [
|
||
// 'show' => [
|
||
// 'name' => '详情',
|
||
// ],
|
||
// ],
|
||
// ],
|
||
'management'=> [
|
||
'name' => '系统管理',
|
||
'curd' => false,
|
||
'children' => [
|
||
'administrators' => [
|
||
'name' => '管理员',
|
||
'curd' => true,
|
||
],
|
||
'roles' => [
|
||
'name' => '角色',
|
||
'curd' => true,
|
||
],
|
||
'permissions' => [
|
||
'name' => '权限',
|
||
'curd' => true,
|
||
],
|
||
'menus' => [
|
||
'name' => '菜单',
|
||
'curd' => true,
|
||
],
|
||
],
|
||
],
|
||
'ad_addresses'=>[
|
||
'name'=>'广告位',
|
||
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
|
||
],
|
||
'ads'=>[
|
||
'name'=>'广告内容',
|
||
'curd' => ['index', 'create', 'store', 'edit', 'update', 'destroy'],
|
||
],
|
||
];
|
||
try {
|
||
DB::begintransaction();
|
||
$this->createPermissionData($permissions);
|
||
DB::commit();
|
||
} catch (\Exception $e) {
|
||
Log::error('权限录入:'.$e->getMessage());
|
||
DB::rollBack();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 插入权限
|
||
*
|
||
* @param array $permissions
|
||
* @param string $key
|
||
* @param integer $pId
|
||
*/
|
||
public function createPermissionData(array $permissions, string $key = '', int $pId = 0)
|
||
{
|
||
$curdArr = [
|
||
'index'=>[
|
||
'name' => '列表',
|
||
],
|
||
'create'=>[
|
||
'name' => '新增',
|
||
],
|
||
'store' =>[
|
||
'name' => '保存',
|
||
],
|
||
'edit' =>[
|
||
'name' => '修改',
|
||
],
|
||
'update'=>[
|
||
'name' => '更新',
|
||
],
|
||
'destroy'=>[
|
||
'name' => '删除',
|
||
],
|
||
'show'=>[
|
||
'name' => '详情',
|
||
],
|
||
];
|
||
foreach ($permissions as $slug => $permission) {
|
||
//是否已存在该权限
|
||
$slugKey = 'dcat.admin.'.($key ? $key.'.'.$slug : $slug);
|
||
$pper = Permission::updateOrCreate(['slug'=>$slugKey], ['name' => $permission['name'], 'parent_id' => $pId]);
|
||
|
||
if (!isset($permission['children'])) {
|
||
$permission['children'] = [];
|
||
}
|
||
//判断是否默认插入curd权限
|
||
if (isset($permission['curd']) && $permission['curd']) {
|
||
if (is_array($permission['curd'])) {
|
||
foreach ($permission['curd'] as $value) {
|
||
$permission['children'][$value] = $curdArr[$value];
|
||
}
|
||
} else {
|
||
$permission['children'] = array_merge($curdArr, $permission['children']);
|
||
}
|
||
}
|
||
if (count($permission['children']) > 0) {
|
||
$_key = $permission['curd'] ? ($key ? $key.'.'.$slug : $slug) : $key;
|
||
$this->createPermissionData($permission['children'], $_key??$slug, $pper->id);
|
||
}
|
||
}
|
||
}
|
||
}
|