Otsuka-APP/utils/permission.js

58 lines
1.8 KiB
JavaScript
Raw Normal View History

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