fix: add can_view_cloud_data to login and profile API responses

- Add can_view_cloud_data field to auth login response
- Add can_view_cloud_data field to agent profile response
- Fetch latest user permissions from /agent/profile on agent layout mount
- Update localStorage with latest can_view_cloud_data value
This commit is contained in:
2026-05-11 00:15:21 +08:00
parent df4ad079f3
commit 6dcb5cde02
3 changed files with 37 additions and 14 deletions
+7 -6
View File
@@ -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,
})
}
+8 -7
View File
@@ -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
+22 -1
View File
@@ -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<any>('/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 = [