This commit is contained in:
27942
2025-12-26 12:25:30 +08:00
parent 9559bc4702
commit 5edfefd38b
2 changed files with 60 additions and 2 deletions

View File

@@ -214,6 +214,16 @@ export default UserAPI
/** 登录用户信息 */
export interface UserInfo {
/** 权限数据列表(权限标识数组) */
permission_data?: string[]
/** 角色列表 */
role?: Array<{
id?: number | string
RoleName?: string
name?: string
permissionId?: string
}>
/** 用户ID */
userId?: string

View File

@@ -45,10 +45,58 @@ export const AuthStorage = {
}
/**
* 权限判断 - 已移除
* 权限判断
* @param value 需要的权限标识(字符串或字符串数组)
* @param type 权限类型:'button' 按钮权限,'role' 角色权限
* @returns 是否有权限
*/
export function hasPerm(value?: string | string[], type?: 'button' | 'role'): boolean {
return true
// 如果没有传入权限值,默认返回 true不限制
if (!value) {
return true
}
// 获取用户信息
const userStore = useUserStoreHook()
const userInfo = userStore.userInfo
// 如果没有用户信息,返回 false
if (!userInfo || (!userInfo.id && !userInfo.userId)) {
return false
}
// 如果是角色权限检查
if (type === 'role') {
const userRoles = userInfo.role || []
const requiredRoles = Array.isArray(value) ? value : [value]
// 检查用户是否有任一所需角色
return requiredRoles.some((role) => {
// 支持角色名称或角色ID匹配
return userRoles.some((userRole: any) => {
if (typeof userRole === 'string') {
return userRole === role
}
return userRole.RoleName === role || userRole.id === role || userRole.name === role
})
})
}
// 按钮权限检查(默认)
// 支持多种字段名permission_data后端返回、perms标准字段
const userPermissions = (userInfo as any).permission_data || userInfo.perms || []
const requiredPerms = Array.isArray(value) ? value : [value]
// 检查用户是否有任一所需权限
// 如果用户没有任何权限数据,返回 false
if (userPermissions.length === 0) {
return false
}
// 检查是否包含所需权限
return requiredPerms.some((perm) => {
return userPermissions.includes(perm)
})
}
/**