From 183ec96d4f14b54db96f46604429f710f91a9c82 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Fri, 29 Jul 2022 14:11:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=BF=E5=91=8A=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=92=8C=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86=E7=9A=84?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../banner/updates/BannerPermissionSeeder.php | 71 +++++++++++++++++++ packages/banner/version.php | 4 ++ .../Http/Controllers/SettingController.php | 2 + packages/setting/src/Http/routes.php | 2 +- .../updates/SettingPermissionSeeder.php | 69 ++++++++++++++++++ packages/setting/version.php | 5 ++ 6 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 packages/banner/updates/BannerPermissionSeeder.php create mode 100644 packages/setting/updates/SettingPermissionSeeder.php diff --git a/packages/banner/updates/BannerPermissionSeeder.php b/packages/banner/updates/BannerPermissionSeeder.php new file mode 100644 index 0000000..785bd62 --- /dev/null +++ b/packages/banner/updates/BannerPermissionSeeder.php @@ -0,0 +1,71 @@ + ['name' => '广告位管理', 'curd' => true], + 'banners' => ['name' => '广告图管理', 'curd' => true], + ]; + $this->createPermissionData($permissions); + } + + /** + * 插入权限 + * + * @param array $permissions + * @param string $key + * @param integer $pId + */ + public 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); + } + } + } + } +} diff --git a/packages/banner/version.php b/packages/banner/version.php index 92bf9e9..0540024 100644 --- a/packages/banner/version.php +++ b/packages/banner/version.php @@ -5,4 +5,8 @@ return [ '初始化广告管理插件', 'CreateBannerTable.php', ], + '1.0.1' => [ + '添加权限迁移文件', + 'BannerPermissionSeeder.php', + ] ]; diff --git a/packages/setting/src/Http/Controllers/SettingController.php b/packages/setting/src/Http/Controllers/SettingController.php index df161ab..aaf10fb 100644 --- a/packages/setting/src/Http/Controllers/SettingController.php +++ b/packages/setting/src/Http/Controllers/SettingController.php @@ -17,6 +17,8 @@ class SettingController extends AdminController protected function grid() { return Grid::make(new Setting(), function (Grid $grid) { + $grid->disableRowSelector(); + $grid->column('slug'); $grid->column('name'); $grid->column('value'); diff --git a/packages/setting/src/Http/routes.php b/packages/setting/src/Http/routes.php index a044c5a..dee48df 100644 --- a/packages/setting/src/Http/routes.php +++ b/packages/setting/src/Http/routes.php @@ -4,4 +4,4 @@ namespace Peidikeji\Setting\Http\Controllers; use Illuminate\Support\Facades\Route; -Route::resource('setting', SettingController::class)->names('setting'); +Route::resource('settings', SettingController::class); diff --git a/packages/setting/updates/SettingPermissionSeeder.php b/packages/setting/updates/SettingPermissionSeeder.php new file mode 100644 index 0000000..5cf8563 --- /dev/null +++ b/packages/setting/updates/SettingPermissionSeeder.php @@ -0,0 +1,69 @@ + ['name' => '配置管理', 'curd' => true], + ]; + $this->createPermissionData($permissions); + } + + /** + * 插入权限 + * + * @param array $permissions + * @param string $key + * @param integer $pId + */ + public 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); + } + } + } + } +} diff --git a/packages/setting/version.php b/packages/setting/version.php index b9083e2..9bac31a 100644 --- a/packages/setting/version.php +++ b/packages/setting/version.php @@ -2,6 +2,11 @@ return [ '1.0.0' => [ + '初始化配置管理', 'CreateAdminSettingsTable.php', ], + '1.0.1' => [ + '添加配置管理权限迁移文件', + 'SettingPermissionSeeder.php' + ] ];