util.js 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. import { isInputEmpty } from '@cip/utils/util'
  2. const getNeedPrivilege = (config) => {
  3. let codes = []
  4. if (typeof config === 'object') { // 判断是否为对象
  5. codes = codes.concat(config.code)
  6. } else {
  7. codes = codes.concat(config)
  8. }
  9. return codes
  10. }
  11. const getMultiRelation = (config) => {
  12. if (typeof config === 'object' && config.type === 'and') {
  13. return 'and'
  14. }
  15. return 'or'
  16. }
  17. export const judgePrivilege = (config, ownPrivileges) => {
  18. const needPrivileges = getNeedPrivilege(config)
  19. const relation = getMultiRelation(config)
  20. if (relation === 'or') { // 或模式 存在 '' | undefined | null
  21. if (needPrivileges.findIndex(v => isInputEmpty(v)) > -1) return true
  22. }
  23. // 过滤掉 '' | undefined | null
  24. const effectiveCodes = needPrivileges.filter(code => !isInputEmpty(code))
  25. if (effectiveCodes.length === 0) return true
  26. if (relation === 'and') {
  27. return !effectiveCodes.some(v => !ownPrivileges.includes(v))
  28. } else {
  29. return effectiveCodes.some(v => ownPrivileges.includes(v))
  30. }
  31. }