feat: refresh user permissions on page reload
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user