From a951b5e8cfab2d63a95814366c5f6961c6339944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=B6=9B?= Date: Sat, 19 Sep 2026 17:51:49 +0800 Subject: [PATCH 1/5] fix: clear stale tokens before OAuth login --- src/views/login/components/Login.vue | 3 +++ src/views/login/index.vue | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/views/login/components/Login.vue b/src/views/login/components/Login.vue index 0962d2a1..a3206701 100644 --- a/src/views/login/components/Login.vue +++ b/src/views/login/components/Login.vue @@ -240,6 +240,9 @@ function toOtherForm(type: "register" | "resetPwd") { function handleOpenSabreLogin() { const redirectPath = (route.query.redirect as string) || "/"; const state = encodeURIComponent(redirectPath); + // OAuth 登录使用网关同源会话;清理历史 token,避免请求拦截器携带 + // 已过期/属于另一登录模式的 Bearer 覆盖刚建立的会话。 + AuthStorage.clearAuth(); window.location.href = `${OAuth2_CONFIG.authorizeUrl}?state=${state}`; } diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 2af478c4..2ed3b3f5 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -156,6 +156,9 @@ const modules = [ ]; function handleOAuthLogin() { + // OAuth 登录使用网关同源会话;清理历史 token,避免请求拦截器携带 + // 已过期/属于另一登录模式的 Bearer 覆盖刚建立的会话。 + AuthStorage.clearAuth(); window.location.href = OAuth2_CONFIG.authorizeUrl; } From ade21001796d79dcd3e6de9736a19e927b1e157e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=B6=9B?= Date: Sat, 19 Sep 2026 20:26:08 +0800 Subject: [PATCH 2/5] Revert "fix: clear stale tokens before OAuth login" This reverts commit a951b5e8cfab2d63a95814366c5f6961c6339944. --- src/views/login/components/Login.vue | 3 --- src/views/login/index.vue | 3 --- 2 files changed, 6 deletions(-) diff --git a/src/views/login/components/Login.vue b/src/views/login/components/Login.vue index a3206701..0962d2a1 100644 --- a/src/views/login/components/Login.vue +++ b/src/views/login/components/Login.vue @@ -240,9 +240,6 @@ function toOtherForm(type: "register" | "resetPwd") { function handleOpenSabreLogin() { const redirectPath = (route.query.redirect as string) || "/"; const state = encodeURIComponent(redirectPath); - // OAuth 登录使用网关同源会话;清理历史 token,避免请求拦截器携带 - // 已过期/属于另一登录模式的 Bearer 覆盖刚建立的会话。 - AuthStorage.clearAuth(); window.location.href = `${OAuth2_CONFIG.authorizeUrl}?state=${state}`; } diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 2ed3b3f5..2af478c4 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -156,9 +156,6 @@ const modules = [ ]; function handleOAuthLogin() { - // OAuth 登录使用网关同源会话;清理历史 token,避免请求拦截器携带 - // 已过期/属于另一登录模式的 Bearer 覆盖刚建立的会话。 - AuthStorage.clearAuth(); window.location.href = OAuth2_CONFIG.authorizeUrl; } From e0258db1b98a03f4069256fcbfa6fa105621a893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=B6=9B?= Date: Sat, 19 Sep 2026 22:19:25 +0800 Subject: [PATCH 3/5] fix: paginate online user list --- src/api/auth/online-user.ts | 19 ++++++++++++++++--- src/types/api/online-user.ts | 2 ++ src/views/security/online-user/index.vue | 15 ++++++++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/api/auth/online-user.ts b/src/api/auth/online-user.ts index 1625e58a..c7b242aa 100644 --- a/src/api/auth/online-user.ts +++ b/src/api/auth/online-user.ts @@ -5,13 +5,26 @@ const ONLINE_USER_BASE_URL = "/auth/online-users"; const OnlineUserAPI = { list(queryParams?: OnlineUserQueryParams) { - return request({ + const query = queryParams ?? { pageNum: 1, pageSize: 10 }; + return request< + any, + { records?: OnlineUserItem[]; current?: number; size?: number; total?: number } + >({ url: ONLINE_USER_BASE_URL, method: "get", params: { - username: queryParams?.username || undefined, + pageNum: query.pageNum, + pageSize: query.pageSize, + username: query.username || undefined, }, - }); + }).then((page) => ({ + data: page.records ?? [], + page: { + pageNum: page.current ?? query.pageNum, + pageSize: page.size ?? query.pageSize, + total: page.total ?? 0, + }, + })); }, kickout(sessionId: string) { return request({ diff --git a/src/types/api/online-user.ts b/src/types/api/online-user.ts index b2c2f5e0..0cf2baf3 100644 --- a/src/types/api/online-user.ts +++ b/src/types/api/online-user.ts @@ -3,6 +3,8 @@ */ export interface OnlineUserQueryParams { + pageNum: number; + pageSize: number; username?: string; } diff --git a/src/views/security/online-user/index.vue b/src/views/security/online-user/index.vue index d14d9430..a59c6d76 100644 --- a/src/views/security/online-user/index.vue +++ b/src/views/security/online-user/index.vue @@ -87,6 +87,13 @@ + @@ -103,8 +110,11 @@ defineOptions({ const queryFormRef = ref(); const loading = ref(false); const onlineUsers = ref([]); +const total = ref(0); const queryParams = reactive({ + pageNum: 1, + pageSize: 10, username: "", }); @@ -112,7 +122,8 @@ function fetchData() { loading.value = true; OnlineUserAPI.list(queryParams) .then((data) => { - onlineUsers.value = data ?? []; + onlineUsers.value = data.data ?? []; + total.value = data.page?.total ?? 0; }) .finally(() => { loading.value = false; @@ -120,11 +131,13 @@ function fetchData() { } function handleQuery() { + queryParams.pageNum = 1; fetchData(); } function handleResetQuery() { queryFormRef.value?.resetFields(); + queryParams.pageNum = 1; fetchData(); } From 648a6727823204804b0690debc33ec92880e4584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=B6=9B?= Date: Sat, 19 Sep 2026 22:56:32 +0800 Subject: [PATCH 4/5] fix: populate dashboard monitoring data --- src/views/dashboard/index.vue | 462 +++++++++++++++--- src/views/dashboard/presentation.ts | 32 ++ .../unit/views/dashboard-presentation.test.ts | 44 ++ 3 files changed, 477 insertions(+), 61 deletions(-) create mode 100644 src/views/dashboard/presentation.ts create mode 100644 tests/unit/views/dashboard-presentation.test.ts diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index f5004940..0d5dc677 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -9,7 +9,12 @@
- + {{ action.label }} @@ -21,7 +26,9 @@
{{ metric.label }} - {{ metric.tag.text }} + + {{ metric.tag.text }} +
{{ metric.value }} @@ -33,7 +40,7 @@ - + - +
-