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