diff --git a/config/router.config.js b/config/router.config.js index 7a5f266b6f28d3d5e275d4e8f5ad9b6f6fe83cc4..5d6b4e5031a29042e5f46d99a56d9416c18015d4 100644 --- a/config/router.config.js +++ b/config/router.config.js @@ -28,8 +28,16 @@ module.exports = [ name: 'analysis', component: './Dashboard/Analysis', }, - { path: '/dashboard/monitor', name: 'monitor', component: './Dashboard/Monitor' }, - { path: '/dashboard/workplace', name: 'workplace', component: './Dashboard/Workplace' }, + { + path: '/dashboard/monitor', + name: 'monitor', + component: './Dashboard/Monitor', + }, + { + path: '/dashboard/workplace', + name: 'workplace', + component: './Dashboard/Workplace', + }, ], }, // forms @@ -84,16 +92,36 @@ module.exports = [ icon: 'table', name: 'list', routes: [ - { path: '/list/table-list', name: 'searchtable', component: './List/TableList' }, - { path: '/list/basic-list', name: 'basiclist', component: './List/BasicList' }, - { path: '/list/card-list', name: 'cardlist', component: './List/CardList' }, + { + path: '/list/table-list', + name: 'searchtable', + component: './List/TableList', + }, + { + path: '/list/basic-list', + name: 'basiclist', + component: './List/BasicList', + }, + { + path: '/list/card-list', + name: 'cardlist', + component: './List/CardList', + }, { path: '/list/search', name: 'searchlist', component: './List/List', routes: [ - { path: '/list/search/articles', name: 'articles', component: './List/Articles' }, - { path: '/list/search/projects', name: 'projects', component: './List/Projects' }, + { + path: '/list/search/articles', + name: 'articles', + component: './List/Articles', + }, + { + path: '/list/search/projects', + name: 'projects', + component: './List/Projects', + }, { path: '/list/search/applications', name: 'applications', @@ -109,8 +137,16 @@ module.exports = [ icon: 'profile', routes: [ // profile - { path: '/profile/basic', name: 'basic', component: './Profile/BasicProfile' }, - { path: '/profile/advanced', name: 'advanced', component: './Profile/AdvancedProfile' }, + { + path: '/profile/basic', + name: 'basic', + component: './Profile/BasicProfile', + }, + { + path: '/profile/advanced', + name: 'advanced', + component: './Profile/AdvancedProfile', + }, ], }, { @@ -119,7 +155,11 @@ module.exports = [ path: '/result', routes: [ // result - { path: '/result/success', name: 'success', component: './Result/Success' }, + { + path: '/result/success', + name: 'success', + component: './Result/Success', + }, { path: '/result/fail', name: 'fail', component: './Result/Error' }, ], }, @@ -129,9 +169,21 @@ module.exports = [ path: '/exception', routes: [ // exception - { path: '/exception/403', name: 'not-permission', component: './Exception/403' }, - { path: '/exception/404', name: 'not-find', component: './Exception/404' }, - { path: '/exception/500', name: 'server-error', component: './Exception/500' }, + { + path: '/exception/403', + name: 'not-permission', + component: './Exception/403', + }, + { + path: '/exception/404', + name: 'not-find', + component: './Exception/404', + }, + { + path: '/exception/500', + name: 'server-error', + component: './Exception/500', + }, { path: '/exception/trigger', name: 'trigger', @@ -172,7 +224,6 @@ module.exports = [ path: '/account/settings', name: 'settings', component: './Account/Settings/Info', - // authority: ['admin'], routes: [ { path: '/account/settings', diff --git a/src/pages/Authorized.js b/src/pages/Authorized.js index cfd86d997ee1b20ed653c4b74c3e99e9c11b0250..8b11d9234ec7198dbcab8b09de31b6734fa826f8 100644 --- a/src/pages/Authorized.js +++ b/src/pages/Authorized.js @@ -2,16 +2,23 @@ import React from 'react'; import RenderAuthorized from '@/components/Authorized'; import Exception from '@/components/Exception'; import { matchRoutes } from 'react-router-config'; +import uniq from 'lodash/uniq'; const Authorized = RenderAuthorized(['admin', 'user']); const noMatch = ; export default ({ children, route, location }) => { - const branch = - matchRoutes(route.routes, location.pathname).filter(item => item.match.isExact)[0] || {}; - const { authority } = branch.route || {}; + const routes = matchRoutes(route.routes, location.pathname); + let authorities = []; + routes.forEach(item => { + if (Array.isArray(item.authority)) { + authorities = authorities.concat(item.authority); + } else if (typeof item.authority === 'string') { + authorities.push(item.authority); + } + }); return ( - + {children} );