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
+1
View File
@@ -620,6 +620,7 @@ func handleGetProfile(c *gin.Context) {
"avatar": user.Avatar, "avatar": user.Avatar,
"balance": user.Balance, "balance": user.Balance,
"can_create_agent": user.CanCreateAgent, "can_create_agent": user.CanCreateAgent,
"can_view_cloud_data": user.CanViewCloudData,
}) })
} }
+1
View File
@@ -63,6 +63,7 @@ func (s *AuthService) Login(username, password, agentPath string) (map[string]in
"role": user.Role, "role": user.Role,
"status": user.Status, "status": user.Status,
"parent_agent_id": user.ParentAgentID, "parent_agent_id": user.ParentAgentID,
"can_view_cloud_data": user.CanViewCloudData,
}, },
"token": token, "token": token,
}, nil }, 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 LanguageChange from '@/components/language-change.vue'
import ThemePopover from '@/components/custom-theme/theme-popover.vue' import ThemePopover from '@/components/custom-theme/theme-popover.vue'
import ToggleTheme from '@/components/toggle-theme.vue' import ToggleTheme from '@/components/toggle-theme.vue'
import api from '@/services/api'
const router = useRouter() const router = useRouter()
const { t } = useI18n() const { t } = useI18n()
@@ -21,7 +22,7 @@ const user = reactive({
can_view_cloud_data: false, can_view_cloud_data: false,
}) })
onMounted(() => { onMounted(async () => {
const storedUser = localStorage.getItem('user') const storedUser = localStorage.getItem('user')
if (storedUser) { if (storedUser) {
try { try {
@@ -36,6 +37,26 @@ onMounted(() => {
console.error('Failed to parse user from localStorage', e) 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 = [ const teams = [