58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
import store from '@/store'
|
||
import { useUserStore } from '@/store' // 导入 userStore
|
||
|
||
/**
|
||
* 角色权限校验
|
||
* @param {Array} value 校验值
|
||
* @returns {Boolean}
|
||
*/
|
||
export function checkRole(value) {
|
||
if (value && value instanceof Array && value.length > 0) {
|
||
// 方式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"
|
||
|
||
// 确保 roles 是数组,处理 ref
|
||
const rolesArray = Array.isArray(roles) ? roles : (roles.value || [])
|
||
|
||
const hasRole = rolesArray.some(role => {
|
||
return super_admin === role || permissionRoles.includes(role)
|
||
})
|
||
|
||
return hasRole
|
||
} else {
|
||
console.error(`need roles! Like checkRole="['admin','editor']"`)
|
||
return false
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 权限校验
|
||
* @param {Array} value 校验值
|
||
* @returns {Boolean}
|
||
*/
|
||
export function checkPermi(value) {
|
||
if (value && value instanceof Array && value.length > 0) {
|
||
const userStore = useUserStore()
|
||
const permissions = userStore.permissions || []
|
||
const permissionDatas = value
|
||
const all_permission = "*:*:*"
|
||
|
||
// 确保 permissions 是数组,处理 ref
|
||
const permissionsArray = Array.isArray(permissions) ? permissions : (permissions.value || [])
|
||
|
||
const hasPermission = permissionsArray.some(permission => {
|
||
return all_permission === permission || permissionDatas.includes(permission)
|
||
})
|
||
|
||
return hasPermission
|
||
} else {
|
||
console.error(`need permissions! Like checkPermi="['system:user:add','system:user:edit']"`)
|
||
return false
|
||
}
|
||
} |