+ import { useAuth } from 'ice';
- function getNavMenuItems(menusData, initIndex) {
+ function getNavMenuItems(menusData, initIndex, auth) {
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => {
- return getSubMenuOrItem(item, `${initIndex}-${index}`);
- });
+ return menusData.filter(item => {
+ let roleAuth = true;
+ if (auth && item.auth && item.auth instanceof Array) {
+ if (item.auth.length) {
+ // 获取当前用户是否有该菜单的权限
+ roleAuth = item.auth.some(key => auth[key]);
+ }
+ }
+ return item.name && !item.hideInMenu && roleAuth;
+ }).map((item, index) => {
+ getSubMenuOrItem(item, `${initIndex}-${index}`, auth)
+ });
}
- function getSubMenuOrItem(item, index) {
+ function getSubMenuOrItem(item, index, auth) {
if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children, index);
+ const childrenItems = getNavMenuItems(item.children, index, auth);
// ...
}
}
const Navigation = () => {
// 获取权限数据 更多权限管理的内容可以参考: https://ice.work/guide/advanced/auth.html
+ const [auth] = useAuth();
return (
<Nav embeddable activeDirection="right">
- {getNavMenuItems(asideMenuConfig, 0)}
+ {getNavMenuItems(asideMenuConfig, 0, auth)}
</Nav>
)
}