1
0
Fork 0
owl-admin-starter/database/seeders/AdminPermissionSeeder.php

83 lines
3.3 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Slowlyo\OwlAdmin\Models\{AdminMenu, AdminPermission};
use Slowlyo\OwlAdmin\Support\Cores\Database;
class AdminPermissionSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Database::make()->fillInitialData();
DB::table('admin_menus')->truncate();
DB::table('admin_permissions')->truncate();
DB::table('admin_permission_menu')->truncate();
DB::table('admin_role_permissions')->truncate();
// icon: https://icones.js.org/collection/mdi
$list = [
['name' => '首页', 'icon' => 'mdi:home', 'slug' => 'dashboard', 'url' => '/dashboard', 'is_home' => 1],
['name' => '系统管理', 'icon' => 'mdi:cog-outline', 'slug' => 'system', 'url' => '/system', 'children' => [
['name' => '管理员', 'icon' => 'mdi:account-cog-outline', 'slug' => 'admin_users', 'url' => '/system/admin_users'],
['name' => '角色', 'icon' => 'mdi:account-box-outline', 'slug' => 'roles', 'url' => '/system/admin_roles'],
['name' => '权限', 'icon' => 'mdi:key-variant', 'slug' => 'permissions', 'url' => '/system/admin_permissions'],
['name' => '菜单', 'icon' => 'mdi:menu-open', 'slug' => 'menus', 'url' => '/system/admin_menus'],
['name' => '设置', 'icon' => 'mdi:application-cog-outline', 'slug' => 'settings', 'url' => '/system/settings'],
]],
];
$this->createByTree($list);
}
protected function createByTree($list, $parent = null)
{
foreach($list as $item) {
$parent_permission_id = data_get($parent, 'permission', 0);
$parent_menu_id = data_get($parent, 'menu', 0);
$permission = $this->createPermission($item, $parent_permission_id);
$menu = $this->createMenu($item, $parent_menu_id);
$menu_has_permissions = [
['permission_id' => $permission->id, 'menu_id' => $menu->id]
];
if ($parent_menu_id) {
array_push($menu_has_permissions, ['permission_id' => $permission->id,'menu_id' => $parent_menu_id]);
}
DB::table('admin_permission_menu')->insert($menu_has_permissions);
if (isset($item['children'])) {
$this->createByTree($item['children'], ['permission' => $permission->id, 'menu' => $menu->id]);
}
}
}
protected function createMenu($item, $pid = 0)
{
return AdminMenu::create([
'parent_id' => $pid,
'custom_order' => data_get($item, 'custom_order', 0),
'title' => data_get($item, 'name'),
'icon' => data_get($item, 'icon'),
'url' => data_get($item, 'url'),
'is_home' => data_get($item, 'is_home', 0),
]);
}
protected function createPermission($item, $pid = 0)
{
$url = data_get($item, 'url');
return AdminPermission::create([
'parent_id' => $pid,
'custom_order' => data_get($item, 'custom_order', 0),
'name' => data_get($item, 'name'),
'slug' => data_get($item, 'slug'),
'http_path' => $url ? [$url] : null,
]);
}
}