| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import React from 'react'
- import { CURRENT } from './renderAuthorize' // eslint-disable-next-line import/no-cycle
- import PromiseRender from './PromiseRender'
- /**
- * 通用权限检查方法
- * Common check permissions method
- * @param { 权限判定 | Permission judgment } authority
- * @param { 你的权限 | Your permission description } currentAuthority
- * @param { 通过的组件 | Passing components } target
- * @param { 未通过的组件 | no pass components } Exception
- */
- const checkPermissions = (authority, currentAuthority, target, Exception) => {
- // 没有判定权限.默认查看所有
- // Retirement authority, return target;
- if (!authority) {
- return target
- } // 数组处理
- if (Array.isArray(authority)) {
- if (Array.isArray(currentAuthority)) {
- if (currentAuthority.some((item) => authority.includes(item))) {
- return target
- }
- } else if (authority.includes(currentAuthority)) {
- return target
- }
- return Exception
- } // string 处理
- if (typeof authority === 'string') {
- if (Array.isArray(currentAuthority)) {
- if (currentAuthority.some((item) => authority === item)) {
- return target
- }
- } else if (authority === currentAuthority) {
- return target
- }
- return Exception
- } // Promise 处理
- if (authority instanceof Promise) {
- return <PromiseRender ok={target} error={Exception} promise={authority} />
- } // Function 处理
- if (typeof authority === 'function') {
- const bool = authority(currentAuthority) // 函数执行后返回值是 Promise
- if (bool instanceof Promise) {
- return <PromiseRender ok={target} error={Exception} promise={bool} />
- }
- if (bool) {
- return target
- }
- return Exception
- }
- throw new Error('unsupported parameters')
- }
- export { checkPermissions }
- function check(authority, target, Exception) {
- return checkPermissions(authority, CURRENT, target, Exception)
- }
- export default check
|