From 5840d8a88e1b2e08b6dbb97654a3a3c04833c3c0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Jan 2026 14:48:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DNavbar=EF=BC=9A=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=AE=A1=E7=90=86=E5=91=98=E8=A7=92=E8=89=B2=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81=E9=80=9A?= =?UTF-8?q?=E8=BF=87roleIds=E5=88=A4=E6=96=AD=E7=AE=A1=E7=90=86=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/Navbar.vue | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Navbar.vue b/frontend/src/components/Navbar.vue index 55d292b..27227f8 100644 --- a/frontend/src/components/Navbar.vue +++ b/frontend/src/components/Navbar.vue @@ -126,12 +126,23 @@ const userInfo = computed(() => ({ // 判断是否是管理员 const isAdmin = computed(() => { - const roles = authStore.userRoles || [] + // 优先从userInfo.roles获取角色列表 + const roles = authStore.userInfo?.roles || authStore.userRoles || [] + // 检查是否包含管理员角色(ADMIN 或 SUPER_ADMIN) - return roles.some((role: any) => { + const hasAdminRole = roles.some((role: any) => { const roleCode = typeof role === 'string' ? role : role.roleCode || role.code || '' return roleCode === 'ADMIN' || roleCode === 'SUPER_ADMIN' }) + + // 如果通过roles没找到,再检查roleIds(兼容旧版) + if (!hasAdminRole && authStore.userInfo?.roleIds) { + const roleIds = authStore.userInfo.roleIds.split(',').map((id: string) => id.trim()) + // roleId 2 = ADMIN, 1 = SUPER_ADMIN + return roleIds.includes('2') || roleIds.includes('1') + } + + return hasAdminRole }) // 判断菜单是否激活