feat: refresh user permissions on page reload

Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
dxc
2026-02-26 16:21:35 +08:00
parent 57c2c532ca
commit c86e67b793
2 changed files with 33 additions and 2 deletions

View File

@ -83,6 +83,29 @@ export const useUserStore = defineStore('user', () => {
localStorage.removeItem('permissions')
}
// 刷新用户权限(不重新登录)
const refreshUserPermissions = async () => {
if (!token.value || !role.value) {
console.warn('无法刷新权限:用户未登录')
return
}
try {
const permRes = await getRolePermissions(role.value)
const permData = permRes.data || permRes
// 合并 menus 和 elements 两个数组
const allPerms = [
...(permData.menus || []),
...(permData.elements || [])
]
permissions.value = allPerms
localStorage.setItem('permissions', JSON.stringify(allPerms))
console.log('用户权限已刷新')
} catch (error) {
console.error('刷新权限失败:', error)
// 可选:保留原有权限
}
}
// 3. Getters / Helpers
// 判断当前用户是否拥有某些角色
const hasRole = (roles: string[]) => {
@ -101,6 +124,7 @@ export const useUserStore = defineStore('user', () => {
permissions,
handleLogin,
logout,
refreshUserPermissions,
hasRole,
hasPermission
}