'admin', 'password' => bcrypt('admin'), 'name' => 'Administrator', ]); AdminRole::truncate(); $role = AdminRole::create([ 'name' => 'Administrator', 'slug' => 'administrator', ]); $user->roles()->attach($role); $menus = AdminMenu::all()->toArray(); $permissions = []; foreach ($menus as $menu) { $_httpPath = $menu['url_type'] == AdminMenu::TYPE_ROUTE ? $this->getHttpPath($menu['url']) : ''; $permissions[] = [ 'id' => $menu['id'], 'name' => $menu['title'], 'slug' => (string)Str::uuid(), 'http_path' => json_encode($_httpPath ? [$_httpPath] : ''), 'order' => $menu['order'], 'parent_id' => $menu['parent_id'], 'created_at' => $menu['created_at'], 'updated_at' => $menu['updated_at'], ]; } AdminPermission::query()->truncate(); AdminPermission::query()->insert($permissions); DB::table('admin_permission_menu')->truncate(); foreach ($permissions as $item) { $query = DB::table('admin_permission_menu'); $query->insert([ 'permission_id' => $item['id'], 'menu_id' => $item['id'], ]); $_id = $item['id']; while ($item['parent_id'] != 0) { (clone $query)->insert([ 'permission_id' => $_id, 'menu_id' => $item['parent_id'], ]); $item = AdminMenu::query()->find($item['parent_id']); } } } private function getHttpPath($uri) { $excepts = ['/', '', '-']; if (in_array($uri, $excepts)) { return ''; } if (!str_starts_with($uri, '/')) { $uri = '/' . $uri; } return $uri . '*'; } }