|
|
@@ -16,6 +16,7 @@ import logo from '../assets/logo.svg';
|
|
|
import Footer from './Footer';
|
|
|
import Header from './Header';
|
|
|
import Context from './MenuContext';
|
|
|
+import Exception403 from '../pages/Exception/403';
|
|
|
|
|
|
const { Content } = Layout;
|
|
|
|
|
|
@@ -76,6 +77,7 @@ class BasicLayout extends React.PureComponent {
|
|
|
this.getPageTitle = memoizeOne(this.getPageTitle);
|
|
|
this.getBreadcrumbNameMap = memoizeOne(this.getBreadcrumbNameMap, isEqual);
|
|
|
this.breadcrumbNameMap = this.getBreadcrumbNameMap();
|
|
|
+ this.matchParamsPath = memoizeOne(this.matchParamsPath, isEqual);
|
|
|
}
|
|
|
|
|
|
state = {
|
|
|
@@ -156,14 +158,16 @@ class BasicLayout extends React.PureComponent {
|
|
|
return routerMap;
|
|
|
}
|
|
|
|
|
|
+ matchParamsPath = pathname => {
|
|
|
+ const pathKey = Object.keys(this.breadcrumbNameMap).find(key =>
|
|
|
+ pathToRegexp(key).test(pathname)
|
|
|
+ );
|
|
|
+ return this.breadcrumbNameMap[pathKey];
|
|
|
+ };
|
|
|
+
|
|
|
getPageTitle = pathname => {
|
|
|
- let currRouterData = null;
|
|
|
- // match params path
|
|
|
- Object.keys(this.breadcrumbNameMap).forEach(key => {
|
|
|
- if (pathToRegexp(key).test(pathname)) {
|
|
|
- currRouterData = this.breadcrumbNameMap[key];
|
|
|
- }
|
|
|
- });
|
|
|
+ const currRouterData = this.matchParamsPath(pathname);
|
|
|
+
|
|
|
if (!currRouterData) {
|
|
|
return 'Ant Design Pro';
|
|
|
}
|
|
|
@@ -221,6 +225,7 @@ class BasicLayout extends React.PureComponent {
|
|
|
const { isMobile } = this.state;
|
|
|
const isTop = PropsLayout === 'topmenu';
|
|
|
const menuData = this.getMenuData();
|
|
|
+ const routerConfig = this.matchParamsPath(pathname);
|
|
|
const layout = (
|
|
|
<Layout>
|
|
|
{isTop && !isMobile ? null : (
|
|
|
@@ -247,12 +252,15 @@ class BasicLayout extends React.PureComponent {
|
|
|
isMobile={isMobile}
|
|
|
{...this.props}
|
|
|
/>
|
|
|
- <Content style={this.getContentStyle()}>{children}</Content>
|
|
|
+ <Content style={this.getContentStyle()}>
|
|
|
+ <Authorized authority={routerConfig.authority} noMatch={<Exception403 />}>
|
|
|
+ {children}
|
|
|
+ </Authorized>
|
|
|
+ </Content>
|
|
|
<Footer />
|
|
|
</Layout>
|
|
|
</Layout>
|
|
|
);
|
|
|
-
|
|
|
return (
|
|
|
<React.Fragment>
|
|
|
<DocumentTitle title={this.getPageTitle(pathname)}>
|