From 2c290dbbf7d7af9c9d6a9b6d4f536573da770a9e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=98=AD?= <81747598+lan-yonghui@users.noreply.github.com>
Date: Tue, 17 Jun 2025 16:14:28 +0800
Subject: [PATCH] fix: hide menu and sorting (#9141)
---
core/init/migration/helper/menu.go | 3 +-
core/init/migration/migrate.go | 1 +
core/init/migration/migrations/init.go | 114 +++++++++++++++++-
.../components/Sidebar/components/SubItem.vue | 11 +-
4 files changed, 121 insertions(+), 8 deletions(-)
diff --git a/core/init/migration/helper/menu.go b/core/init/migration/helper/menu.go
index 1dd5f8ce9..dad26e4e3 100644
--- a/core/init/migration/helper/menu.go
+++ b/core/init/migration/helper/menu.go
@@ -29,7 +29,7 @@ func LoadMenus() string {
{ID: "71", Disabled: false, Title: "menu.files", IsShow: true, Label: "File", Path: "/hosts/files"},
{ID: "72", Disabled: false, Title: "menu.monitor", IsShow: true, Label: "Monitorx", Path: "/hosts/monitor/monitor"},
{ID: "74", Disabled: false, Title: "menu.firewall", IsShow: true, Label: "FirewallPort", Path: "/hosts/firewall/port"},
- {ID: "75", Disabled: false, Title: "menu.supervisor", IsShow: true, Label: "Process", Path: "/hosts/process/process"},
+ {ID: "75", Disabled: false, Title: "menu.processManage", IsShow: true, Label: "Process", Path: "/hosts/process/process"},
{ID: "76", Disabled: false, Title: "menu.ssh", IsShow: true, Label: "SSH", Path: "/hosts/ssh/ssh"},
}},
{ID: "8", Disabled: false, Title: "menu.terminal", IsShow: true, Label: "Terminal-Menu", Path: "/hosts/terminal"},
@@ -40,6 +40,7 @@ func LoadMenus() string {
{ID: "118", Disabled: false, Title: "xpack.app.app", IsShow: true, Label: "XApp", Path: "/xpack/app"},
{ID: "112", Disabled: false, Title: "xpack.waf.name", IsShow: true, Label: "Dashboard", Path: "/xpack/waf/dashboard"},
{ID: "111", Disabled: false, Title: "xpack.node.nodeManagement", IsShow: true, Label: "Node", Path: "/xpack/node"},
+ {ID: "119", Disabled: false, Title: "xpack.upage", IsShow: true, Label: "Upage", Path: "/xpack/upage"},
{ID: "113", Disabled: false, Title: "xpack.monitor.name", IsShow: true, Label: "MonitorDashboard", Path: "/xpack/monitor/dashboard"},
{ID: "114", Disabled: false, Title: "xpack.tamper.tamper", IsShow: true, Label: "Tamper", Path: "/xpack/tamper"},
{ID: "115", Disabled: false, Title: "xpack.exchange.exchange", IsShow: true, Label: "FileExange", Path: "/xpack/exchange/file"},
diff --git a/core/init/migration/migrate.go b/core/init/migration/migrate.go
index 7aa762cd6..dceeaf5ea 100644
--- a/core/init/migration/migrate.go
+++ b/core/init/migration/migrate.go
@@ -17,6 +17,7 @@ func Init() {
migrations.InitGoogle,
migrations.AddTaskDB,
migrations.AddXpackHideMenu,
+ migrations.UpdateXpackHideMenu,
})
if err := m.Migrate(); err != nil {
global.LOG.Error(err)
diff --git a/core/init/migration/migrations/init.go b/core/init/migration/migrations/init.go
index ebdc3de6c..2fcbe1c55 100644
--- a/core/init/migration/migrations/init.go
+++ b/core/init/migration/migrations/init.go
@@ -312,7 +312,119 @@ var AddXpackHideMenu = &gormigrate.Migration{
}
}
if !exists {
- menus[i].Children = append(menus[i].Children, newItem)
+ menus[i].Children = append([]dto.ShowMenu{newItem}, menus[i].Children...)
+ }
+ break
+ }
+ }
+
+ updatedJSON, err := json.Marshal(menus)
+ if err != nil {
+ return tx.Model(&model.Setting{}).
+ Where("key = ?", "HideMenu").
+ Update("value", helper.LoadMenus()).Error
+ }
+
+ return tx.Model(&model.Setting{}).Where("key = ?", "HideMenu").Update("value", string(updatedJSON)).Error
+ },
+}
+
+var UpdateXpackHideMenu = &gormigrate.Migration{
+ ID: "20250617-update-xpack-hide-menu",
+ Migrate: func(tx *gorm.DB) error {
+ var menuJSON string
+ if err := tx.Model(&model.Setting{}).Where("key = ?", "HideMenu").Pluck("value", &menuJSON).Error; err != nil {
+ return err
+ }
+ var menus []dto.ShowMenu
+ if err := json.Unmarshal([]byte(menuJSON), &menus); err != nil {
+ return tx.Model(&model.Setting{}).
+ Where("key = ?", "HideMenu").
+ Update("value", helper.LoadMenus()).Error
+ }
+ newItem := dto.ShowMenu{
+ ID: "119",
+ Disabled: false,
+ Title: "xpack.upage",
+ IsShow: true,
+ Label: "Upage",
+ Path: "/xpack/upage",
+ }
+
+ for i, menu := range menus {
+ if menu.ID == "11" {
+ exists := false
+ for _, child := range menu.Children {
+ if child.ID == newItem.ID {
+ exists = true
+ break
+ }
+ }
+ if exists {
+ break
+ }
+
+ insertIndex := -1
+ for j, child := range menu.Children {
+ if child.ID == "111" {
+ insertIndex = j
+ break
+ }
+ }
+
+ if insertIndex != -1 {
+ children := menu.Children
+ menus[i].Children = append(children[:insertIndex+1], append([]dto.ShowMenu{newItem}, children[insertIndex+1:]...)...)
+ } else {
+ menus[i].Children = append([]dto.ShowMenu{newItem}, menus[i].Children...)
+ }
+ break
+ }
+ }
+
+ for i, menu := range menus {
+ if menu.ID == "11" {
+ existsIndex := -1
+ for j, child := range menu.Children {
+ if child.ID == "118" {
+ existsIndex = j
+ break
+ }
+ }
+
+ if existsIndex == 0 {
+ break
+ }
+
+ var item118 dto.ShowMenu
+ if existsIndex != -1 {
+ item118 = menu.Children[existsIndex]
+ menus[i].Children = append(menu.Children[:existsIndex], menu.Children[existsIndex+1:]...)
+ } else {
+ item118 = dto.ShowMenu{
+ ID: "118",
+ Disabled: false,
+ Title: "xpack.app.app",
+ IsShow: true,
+ Label: "XApp",
+ Path: "/xpack/app",
+ }
+ }
+
+ menus[i].Children = append([]dto.ShowMenu{item118}, menus[i].Children...)
+ break
+ }
+ }
+
+ for i, menu := range menus {
+ if menu.ID == "7" {
+ for j, child := range menu.Children {
+ if child.ID == "75" {
+ if child.Title != "menu.processManage" {
+ menus[i].Children[j].Title = "menu.processManage"
+ }
+ break
+ }
}
break
}
diff --git a/frontend/src/layout/components/Sidebar/components/SubItem.vue b/frontend/src/layout/components/Sidebar/components/SubItem.vue
index 3a08bd952..fe58cbc60 100644
--- a/frontend/src/layout/components/Sidebar/components/SubItem.vue
+++ b/frontend/src/layout/components/Sidebar/components/SubItem.vue
@@ -18,7 +18,11 @@
{{ $t(subItem.meta?.title as string, 2) }}
-
+
+
+ {{ $t('xpack.upage') }}
+
+
@@ -28,11 +32,6 @@
{{ $t(subItem.meta?.title as string, 2) }}
-
-
- {{ $t('xpack.upage') }}
-
-