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 }) // 判断菜单是否激活