123456789101112131415161718192021222324252627282930313233 |
- import { isInputEmpty } from '@cip/utils/util'
- const getNeedPrivilege = (config) => {
- let codes = []
- if (typeof config === 'object') { // 判断是否为对象
- codes = codes.concat(config.code)
- } else {
- codes = codes.concat(config)
- }
- return codes
- }
- const getMultiRelation = (config) => {
- if (typeof config === 'object' && config.type === 'and') {
- return 'and'
- }
- return 'or'
- }
- export const judgePrivilege = (config, ownPrivileges) => {
- const needPrivileges = getNeedPrivilege(config)
- const relation = getMultiRelation(config)
- if (relation === 'or') { // 或模式 存在 '' | undefined | null
- if (needPrivileges.findIndex(v => isInputEmpty(v)) > -1) return true
- }
- // 过滤掉 '' | undefined | null
- const effectiveCodes = needPrivileges.filter(code => !isInputEmpty(code))
- if (effectiveCodes.length === 0) return true
- if (relation === 'and') {
- return !effectiveCodes.some(v => !ownPrivileges.includes(v))
- } else {
- return effectiveCodes.some(v => ownPrivileges.includes(v))
- }
- }
|