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