[ // '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'], ], 'article_categories' =>[ '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); } } } }