2025-08-19 17:07:46 +08:00
|
|
|
|
import store from '@/store'
|
2026-03-19 10:01:55 +08:00
|
|
|
|
import { useUserStore } from '@/store' // 导入 userStore
|
2025-08-19 17:07:46 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
2026-03-19 10:01:55 +08:00
|
|
|
|
* 角色权限校验
|
2025-08-19 17:07:46 +08:00
|
|
|
|
* @param {Array} value 校验值
|
|
|
|
|
|
* @returns {Boolean}
|
|
|
|
|
|
*/
|
2026-03-19 10:01:55 +08:00
|
|
|
|
export function checkRole(value) {
|
2025-08-19 17:07:46 +08:00
|
|
|
|
if (value && value instanceof Array && value.length > 0) {
|
2026-03-19 10:01:55 +08:00
|
|
|
|
// 方式1:通过 store.getters 获取,但需要确保 getters 返回的是值
|
|
|
|
|
|
// const roles = store.getters?.roles || []
|
|
|
|
|
|
|
|
|
|
|
|
// 方式2:直接使用 useUserStore
|
|
|
|
|
|
const userStore = useUserStore()
|
|
|
|
|
|
const roles = userStore.roles || [] // 这里 roles 是 ref,需要 .value
|
|
|
|
|
|
const permissionRoles = value
|
|
|
|
|
|
const super_admin = "admin"
|
2025-08-19 17:07:46 +08:00
|
|
|
|
|
2026-03-19 10:01:55 +08:00
|
|
|
|
// 确保 roles 是数组,处理 ref
|
|
|
|
|
|
const rolesArray = Array.isArray(roles) ? roles : (roles.value || [])
|
|
|
|
|
|
|
|
|
|
|
|
const hasRole = rolesArray.some(role => {
|
|
|
|
|
|
return super_admin === role || permissionRoles.includes(role)
|
2025-08-19 17:07:46 +08:00
|
|
|
|
})
|
|
|
|
|
|
|
2026-03-19 10:01:55 +08:00
|
|
|
|
return hasRole
|
2025-08-19 17:07:46 +08:00
|
|
|
|
} else {
|
2026-03-19 10:01:55 +08:00
|
|
|
|
console.error(`need roles! Like checkRole="['admin','editor']"`)
|
2025-08-19 17:07:46 +08:00
|
|
|
|
return false
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2026-03-19 10:01:55 +08:00
|
|
|
|
* 权限校验
|
2025-08-19 17:07:46 +08:00
|
|
|
|
* @param {Array} value 校验值
|
|
|
|
|
|
* @returns {Boolean}
|
|
|
|
|
|
*/
|
2026-03-19 10:01:55 +08:00
|
|
|
|
export function checkPermi(value) {
|
2025-08-19 17:07:46 +08:00
|
|
|
|
if (value && value instanceof Array && value.length > 0) {
|
2026-03-19 10:01:55 +08:00
|
|
|
|
const userStore = useUserStore()
|
|
|
|
|
|
const permissions = userStore.permissions || []
|
|
|
|
|
|
const permissionDatas = value
|
|
|
|
|
|
const all_permission = "*:*:*"
|
2025-08-19 17:07:46 +08:00
|
|
|
|
|
2026-03-19 10:01:55 +08:00
|
|
|
|
// 确保 permissions 是数组,处理 ref
|
|
|
|
|
|
const permissionsArray = Array.isArray(permissions) ? permissions : (permissions.value || [])
|
|
|
|
|
|
|
|
|
|
|
|
const hasPermission = permissionsArray.some(permission => {
|
|
|
|
|
|
return all_permission === permission || permissionDatas.includes(permission)
|
2025-08-19 17:07:46 +08:00
|
|
|
|
})
|
|
|
|
|
|
|
2026-03-19 10:01:55 +08:00
|
|
|
|
return hasPermission
|
2025-08-19 17:07:46 +08:00
|
|
|
|
} else {
|
2026-03-19 10:01:55 +08:00
|
|
|
|
console.error(`need permissions! Like checkPermi="['system:user:add','system:user:edit']"`)
|
2025-08-19 17:07:46 +08:00
|
|
|
|
return false
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|