diff --git a/backend/internal/router/agent/agent.go b/backend/internal/router/agent/agent.go index d1179e0..961e8e9 100644 --- a/backend/internal/router/agent/agent.go +++ b/backend/internal/router/agent/agent.go @@ -614,12 +614,13 @@ func handleGetProfile(c *gin.Context) { } response.Success(c, gin.H{ - "id": user.ID, - "username": user.Username, - "email": user.Email, - "avatar": user.Avatar, - "balance": user.Balance, - "can_create_agent": user.CanCreateAgent, + "id": user.ID, + "username": user.Username, + "email": user.Email, + "avatar": user.Avatar, + "balance": user.Balance, + "can_create_agent": user.CanCreateAgent, + "can_view_cloud_data": user.CanViewCloudData, }) } diff --git a/backend/internal/service/auth.go b/backend/internal/service/auth.go index 6ccc4da..2f6e308 100644 --- a/backend/internal/service/auth.go +++ b/backend/internal/service/auth.go @@ -56,13 +56,14 @@ func (s *AuthService) Login(username, password, agentPath string) (map[string]in // 返回用户信息和令牌 return map[string]interface{}{ "user": map[string]interface{}{ - "id": user.ID, - "username": user.Username, - "email": user.Email, - "avatar": user.Avatar, - "role": user.Role, - "status": user.Status, - "parent_agent_id": user.ParentAgentID, + "id": user.ID, + "username": user.Username, + "email": user.Email, + "avatar": user.Avatar, + "role": user.Role, + "status": user.Status, + "parent_agent_id": user.ParentAgentID, + "can_view_cloud_data": user.CanViewCloudData, }, "token": token, }, nil diff --git a/frontend/src/layouts/agent.vue b/frontend/src/layouts/agent.vue index c759a93..125b6f5 100644 --- a/frontend/src/layouts/agent.vue +++ b/frontend/src/layouts/agent.vue @@ -9,6 +9,7 @@ import TeamSwitcher from '@/components/app-sidebar/team-switcher.vue' import LanguageChange from '@/components/language-change.vue' import ThemePopover from '@/components/custom-theme/theme-popover.vue' import ToggleTheme from '@/components/toggle-theme.vue' +import api from '@/services/api' const router = useRouter() const { t } = useI18n() @@ -21,7 +22,7 @@ const user = reactive({ can_view_cloud_data: false, }) -onMounted(() => { +onMounted(async () => { const storedUser = localStorage.getItem('user') if (storedUser) { try { @@ -36,6 +37,26 @@ onMounted(() => { console.error('Failed to parse user from localStorage', e) } } + + try { + const data = await api.get('/agent/profile') + if (data) { + user.name = data.username || user.name + user.email = data.email || user.email + user.avatar = data.avatar || user.avatar + user.can_view_cloud_data = data.can_view_cloud_data || false + const storedUser = localStorage.getItem('user') + if (storedUser) { + const parsed = JSON.parse(storedUser) + parsed.can_view_cloud_data = data.can_view_cloud_data || false + parsed.username = data.username || parsed.username + localStorage.setItem('user', JSON.stringify(parsed)) + } + } + } + catch { + // ignore + } }) const teams = [