diff --git a/backend-fastapi/db_init.json b/backend-fastapi/db_init.json index 77bfd97..2215b28 100644 --- a/backend-fastapi/db_init.json +++ b/backend-fastapi/db_init.json @@ -7139,14 +7139,12 @@ "name": "ControlCenter", "title": "menu-title.controlCenter", "authCode": null, - "path": "/page-render/main_home", - "type": "online_page", - "component": "online-dev/page-render/index", + "path": "/control-center", + "type": "menu", + "component": "_core/control-center/index", "redirect": null, "activePath": null, - "query": { - "pageCode": "main_home" - }, + "query": null, "noBasicLayout": false, "icon": "lucide:layout-dashboard", "activeIcon": null, diff --git a/web/apps/web-ele/src/router/guard.ts b/web/apps/web-ele/src/router/guard.ts index 1c2690d..520c979 100644 --- a/web/apps/web-ele/src/router/guard.ts +++ b/web/apps/web-ele/src/router/guard.ts @@ -11,6 +11,13 @@ import { useAppContextStore } from '#/store/app-context'; import { generateAccess } from './access'; +function normalizeHomePath(path?: null | string) { + if (!path || path === '/page-render/main_home') { + return preferences.app.defaultHomePath; + } + return path; +} + /** * 通用守卫配置 * @param router @@ -113,8 +120,7 @@ function setupAccessGuard(router: Router) { if (to.path === LOGIN_PATH && accessStore.accessToken) { return decodeURIComponent( (to.query?.redirect as string) || - userStore.userInfo?.homePath || - preferences.app.defaultHomePath, + normalizeHomePath(userStore.userInfo?.homePath), ); } return true; @@ -207,7 +213,7 @@ function setupAccessGuard(router: Router) { // 重定向逻辑 const redirectPath = (from.query.redirect ?? (to.path === preferences.app.defaultHomePath - ? userInfo.homePath || preferences.app.defaultHomePath + ? normalizeHomePath(userInfo.homePath) : to.fullPath)) as string; return { diff --git a/web/apps/web-ele/src/store/auth.ts b/web/apps/web-ele/src/store/auth.ts index 6f77751..546d3bf 100644 --- a/web/apps/web-ele/src/store/auth.ts +++ b/web/apps/web-ele/src/store/auth.ts @@ -13,6 +13,13 @@ import { getAccessCodesApi, loginApi, logoutApi } from '#/api/core/auth'; import { getUserInfoApi } from '#/api/core/user'; import { $t } from '#/locales'; +function normalizeHomePath(path?: null | string) { + if (!path || path === '/page-render/main_home') { + return preferences.app.defaultHomePath; + } + return path; +} + export const useAuthStore = defineStore('auth', () => { const accessStore = useAccessStore(); const userStore = useUserStore(); @@ -64,9 +71,7 @@ export const useAuthStore = defineStore('auth', () => { } else { onSuccess ? await onSuccess?.() - : await router.push( - userInfo.homePath || preferences.app.defaultHomePath, - ); + : await router.push(normalizeHomePath(userInfo.homePath)); } if (userInfo?.realName) { diff --git a/web/apps/web-ele/src/views/_core/authentication/login.vue b/web/apps/web-ele/src/views/_core/authentication/login.vue index c907fb5..ef685b4 100644 --- a/web/apps/web-ele/src/views/_core/authentication/login.vue +++ b/web/apps/web-ele/src/views/_core/authentication/login.vue @@ -11,6 +11,8 @@ import { $t } from '@vben/locales'; import { getPreferencesConfigApi } from '#/api/core/ui-config'; import { useAuthStore } from '#/store'; +const LEGACY_HOME_PATH = '/page-render/main_home'; + defineOptions({ name: 'Login' }); const authStore = useAuthStore(); @@ -59,6 +61,10 @@ const getRedirectState = () => { return redirect ? JSON.stringify({ redirect }) : undefined; }; +function normalizeRedirectPath(path: string) { + return path === LEGACY_HOME_PATH ? '/' : path; +} + type OAuthProvider = | 'dingtalk' | 'feishu' @@ -109,7 +115,7 @@ async function handleLogin(params: Record) { if (redirect) { // 有 redirect 参数时,登录成功后跳转到指定页面 await authStore.authLogin(params, async () => { - const targetPath = decodeURIComponent(redirect); + const targetPath = normalizeRedirectPath(decodeURIComponent(redirect)); await router.push(targetPath); }); } else {