Commit cbf052c6 authored by Tan90Qian's avatar Tan90Qian Committed by 陈帅

修复2.0权限问题

parent 7fde4e74
import React from 'react'; import React from 'react';
import RenderAuthorized from '@/components/Authorized'; import RenderAuthorized from '@/components/Authorized';
import Exception from '@/components/Exception'; import Exception from '@/components/Exception';
import { getAuthority } from '@/utils/authority';
import { matchRoutes } from 'react-router-config'; import { matchRoutes } from 'react-router-config';
import uniq from 'lodash/uniq'; import intersection from 'lodash/intersection';
import { formatMessage } from 'umi/locale'; import { formatMessage } from 'umi/locale';
import Link from 'umi/link'; import Link from 'umi/link';
const Authorized = RenderAuthorized(['admin', 'user']); const Authorized = RenderAuthorized(getAuthority());
export default ({ children, route, location }) => { export default ({ children, route, location }) => {
const routes = matchRoutes(route.routes, location.pathname); const routes = matchRoutes(route.routes, location.pathname);
let authorities = []; let authorities = [];
routes.forEach(item => { routes.forEach(item => {
if (Array.isArray(item.route.authority)) { if (Array.isArray(item.route.authority) && item.route.authority.length) {
authorities = authorities.concat(item.route.authority);
} else if (typeof item.route.authority === 'string') {
authorities.push(item.route.authority); authorities.push(item.route.authority);
} else if (typeof item.route.authority === 'string' && item.route.authority) {
authorities.push([item.route.authority]);
} }
}); });
const noMatch = ( const noMatch = (
...@@ -28,7 +29,7 @@ export default ({ children, route, location }) => { ...@@ -28,7 +29,7 @@ export default ({ children, route, location }) => {
); );
return ( return (
<Authorized <Authorized
authority={authorities.length === 0 ? undefined : uniq(authorities)} authority={authorities.length === 0 ? undefined : intersection(...authorities)}
noMatch={noMatch} noMatch={noMatch}
> >
{children} {children}
......
...@@ -6,7 +6,7 @@ export function getAuthority() { ...@@ -6,7 +6,7 @@ export function getAuthority() {
if (authority.includes('[')) { if (authority.includes('[')) {
authority = JSON.parse(authority); authority = JSON.parse(authority);
} else { } else {
authority = [authority]; authority = [JSON.parse(authority)];
} }
} else { } else {
authority = ['admin']; authority = ['admin'];
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment