AuthRouter.js
1015 Bytes
/**
* Auther: APIS
*/
import React, { useEffect, useState } from 'react';
import { connect } from 'umi';
import NoFoundPage from '@/pages/404';
/**
* 路由权限控制
* 路由权限控制需要在路由配置里面对应的路由设置'auths'字段即可,支持字符串和数组,不需要加权限的路由不设置即可。
* 原则上一个页面允许存在多个权限code,但是不允许一个code对应多个页面
* @param {*} props
*/
const AuthRouter = props=> {
const { userAuths, routeMaps, path, children } = props;
const currentAuths = routeMaps[path];
let hasAuth = true;
if (currentAuths) {
if (Array.isArray(currentAuths)) {
hasAuth = currentAuths.some(item=> userAuths.includes(item));
} else {
hasAuth = userAuths.includes(currentAuths);
}
}
return <>{hasAuth ? children : <NoFoundPage />}</>;
};
export default connect(({user, settings})=> {
return {
userAuths: user.userAuths,
routeMaps: settings.routeMaps
}
})(AuthRouter);