From 9197c06cc33a775d8874c7e2786e21f818b6b9b2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Jan 2026 15:58:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Navbar=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E5=88=A4=E6=96=AD=EF=BC=9A=E4=BC=98=E5=85=88=E6=A3=80?= =?UTF-8?q?=E6=9F=A5roleIds=EF=BC=8C=E6=B7=BB=E5=8A=A0=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/Navbar.vue | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/Navbar.vue b/frontend/src/components/Navbar.vue index 679ca31..3750760 100644 --- a/frontend/src/components/Navbar.vue +++ b/frontend/src/components/Navbar.vue @@ -126,7 +126,18 @@ const userInfo = computed(() => ({ // 判断是否是管理员 const isAdmin = computed(() => { - // 优先从userInfo.roles获取角色列表 + // 优先检查roleIds(最可靠) + if (authStore.userInfo?.roleIds) { + const roleIds = authStore.userInfo.roleIds.split(',').map((id: string) => id.trim()) + // roleId 2 = ADMIN, 1 = SUPER_ADMIN + const isAdminByRoleIds = roleIds.includes('2') || roleIds.includes('1') + if (isAdminByRoleIds) { + console.log('[Navbar] 通过roleIds判断为管理员:', roleIds) + return true + } + } + + // 其次从userInfo.roles获取角色列表 const roles = authStore.userInfo?.roles || authStore.userRoles || [] // 检查是否包含管理员角色(ADMIN 或 SUPER_ADMIN) @@ -135,14 +146,14 @@ const isAdmin = computed(() => { 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') + if (hasAdminRole) { + console.log('[Navbar] 通过roles判断为管理员:', roles) + return true } - return hasAdminRole + // 调试日志 + console.log('[Navbar] 不是管理员 - roleIds:', authStore.userInfo?.roleIds, 'roles:', roles) + return false }) // 判断菜单是否激活