hthhth
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user