Otsuka-APP/utils/permission.js
2026-03-19 10:01:55 +08:00

58 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}