import store from '@/store' /** * 字符权限校验 * @param {Array} value 校验值 * @returns {Boolean} */ export function checkPermi(value) { if (value && value instanceof Array && value.length > 0) { const permissions = store.getters && store.getters.permissions if(!permissions)return const permissionDatas = value const all_permission = "*:*:*" const hasPermission = permissions.some(permission => { return all_permission === permission || permissionDatas.includes(permission) }) if (!hasPermission) { return false } return true } else { console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`) return false } } /** * 部门权限校验 * @param {Number} deptId 部门id * @param {Array} value 校验值 * @param roleKey * @returns {Boolean} */ export function checkDeptPermi(deptId, value, roleKey = null) { const all_permission = "*:*:*"; const deptPermissions = store.getters && store.getters.deptPermissions; const userPermissions = store.getters && store.getters.permissions; let permissions = [] if (roleKey) { permissions = deptPermissions[deptId]?.roles?.find(it => it.roleKey === roleKey)?.permissions || [] } else { permissions = deptPermissions[deptId]?.permissions || [] } if (value && value instanceof Array && value.length > 0) { const permissionFlag = value return permissions.some(permission => { return all_permission === permission || permissionFlag.includes(permission) }) || userPermissions.some(permission => all_permission === permission) } else { return false } } /** * 角色权限校验 * @param {Array} value 校验值 * @returns {Boolean} */ export function checkRole(value) { if (value && value instanceof Array && value.length > 0) { const roles = store.getters && store.getters.roles const permissionRoles = value const super_admin = "admin" const hasRole = roles.some(role => { return super_admin === role || permissionRoles.includes(role) }) if (!hasRole) { return false } return true } else { console.error(`need roles! Like checkRole="['admin','editor']"`) return false } } /** * 部门角色权限校验 * @param {Number} deptId 部门id * @param {Array} value 校验值 * @returns {Boolean} */ export function checkDeptRolePermi(deptId, value) { const all_permission = '*:*:*' const deptPermissions = store.getters && store.getters.deptPermissions const userPermissions = store.getters && store.getters.permissions const permissions = deptPermissions[deptId]?.permissions || [] const roles = deptPermissions[deptId]?.roles?.map(it => it.roleKey) || [] if (value && value instanceof Array && value.length > 0) { const roleFlag = value return permissions.some(permission => all_permission === permission) || userPermissions.some(permission => all_permission === permission) || roles.some(key => roleFlag.includes(key)) } else { return false } }