From fb692b5e26ef76b6fd4b519039008ea3cce7a947 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Tue, 9 Aug 2022 17:13:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Console/InstallCommand.php | 2 + src/Models/AdminPermissionSeeder.php | 73 +++++++++++++++ src/Models/AdminTablesSeeder.php | 130 --------------------------- 3 files changed, 75 insertions(+), 130 deletions(-) create mode 100644 src/Models/AdminPermissionSeeder.php diff --git a/src/Console/InstallCommand.php b/src/Console/InstallCommand.php index f856d6b..1d653f0 100755 --- a/src/Console/InstallCommand.php +++ b/src/Console/InstallCommand.php @@ -3,6 +3,7 @@ namespace Dcat\Admin\Console; use Dcat\Admin\Models\AdminTablesSeeder; +use Dcat\Admin\Models\AdminPermissionSeeder; use Illuminate\Console\Command; class InstallCommand extends Command @@ -55,6 +56,7 @@ class InstallCommand extends Command if ($userModel::count() == 0) { $this->call('db:seed', ['--class' => AdminTablesSeeder::class]); + $this->call('db:seed', ['--class' => AdminPermissionSeeder::class]); } } diff --git a/src/Models/AdminPermissionSeeder.php b/src/Models/AdminPermissionSeeder.php new file mode 100644 index 0000000..19a39f0 --- /dev/null +++ b/src/Models/AdminPermissionSeeder.php @@ -0,0 +1,73 @@ + ['name' => '人员管理', 'curd' => ['index', 'create', 'edit', 'destroy']], + 'roles' => ['name' => '角色管理', 'curd' => ['index', 'create', 'edit', 'destroy']], + 'menus' => ['name' => '菜单管理', 'curd' => ['index', 'create', 'edit', 'destroy']], + ]; + DB::table('admin_permissions')->truncate(); + $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/src/Models/AdminTablesSeeder.php b/src/Models/AdminTablesSeeder.php index 58c40f0..afcc636 100755 --- a/src/Models/AdminTablesSeeder.php +++ b/src/Models/AdminTablesSeeder.php @@ -34,135 +34,5 @@ class AdminTablesSeeder extends Seeder // add role to user. Administrator::first()->roles()->save(Role::first()); - - //create a permission - Permission::truncate(); - Permission::insert([ - [ - 'id' => 1, - 'name' => 'Auth management', - 'slug' => 'auth-management', - 'http_method' => '', - 'http_path' => '', - 'parent_id' => 0, - 'order' => 1, - 'created_at' => $createdAt, - ], - [ - 'id' => 2, - 'name' => 'Users', - 'slug' => 'users', - 'http_method' => '', - 'http_path' => '/auth/users*', - 'parent_id' => 1, - 'order' => 2, - 'created_at' => $createdAt, - ], - [ - 'id' => 3, - 'name' => 'Roles', - 'slug' => 'roles', - 'http_method' => '', - 'http_path' => '/auth/roles*', - 'parent_id' => 1, - 'order' => 3, - 'created_at' => $createdAt, - ], - [ - 'id' => 4, - 'name' => 'Permissions', - 'slug' => 'permissions', - 'http_method' => '', - 'http_path' => '/auth/permissions*', - 'parent_id' => 1, - 'order' => 4, - 'created_at' => $createdAt, - ], - [ - 'id' => 5, - 'name' => 'Menu', - 'slug' => 'menu', - 'http_method' => '', - 'http_path' => '/auth/menu*', - 'parent_id' => 1, - 'order' => 5, - 'created_at' => $createdAt, - ], - [ - 'id' => 6, - 'name' => 'Extension', - 'slug' => 'extension', - 'http_method' => '', - 'http_path' => '/auth/extensions*', - 'parent_id' => 1, - 'order' => 6, - 'created_at' => $createdAt, - ], - ]); - -// Role::first()->permissions()->save(Permission::first()); - - // add default menus. - Menu::truncate(); - Menu::insert([ - [ - 'parent_id' => 0, - 'order' => 1, - 'title' => 'Index', - 'icon' => 'feather icon-bar-chart-2', - 'uri' => '/', - 'created_at' => $createdAt, - ], - [ - 'parent_id' => 0, - 'order' => 2, - 'title' => 'Admin', - 'icon' => 'feather icon-settings', - 'uri' => '', - 'created_at' => $createdAt, - ], - [ - 'parent_id' => 2, - 'order' => 3, - 'title' => 'Users', - 'icon' => '', - 'uri' => 'auth/users', - 'created_at' => $createdAt, - ], - [ - 'parent_id' => 2, - 'order' => 4, - 'title' => 'Roles', - 'icon' => '', - 'uri' => 'auth/roles', - 'created_at' => $createdAt, - ], - [ - 'parent_id' => 2, - 'order' => 5, - 'title' => 'Permission', - 'icon' => '', - 'uri' => 'auth/permissions', - 'created_at' => $createdAt, - ], - [ - 'parent_id' => 2, - 'order' => 6, - 'title' => 'Menu', - 'icon' => '', - 'uri' => 'auth/menu', - 'created_at' => $createdAt, - ], - [ - 'parent_id' => 2, - 'order' => 7, - 'title' => 'Extensions', - 'icon' => '', - 'uri' => 'auth/extensions', - 'created_at' => $createdAt, - ], - ]); - - (new Menu())->flushCache(); } }