Bläddra i källkod

Merge branch 'master' of github.com:ant-design/ant-design-pro

afc163 7 år sedan
förälder
incheckning
113fe538f8

+ 3 - 0
config/router.config.js

@@ -15,6 +15,7 @@ export default [
     path: '/',
     component: '../layouts/BasicLayout',
     Routes: ['src/pages/Authorized'],
+    authority: ['admin', 'user'],
     routes: [
       // dashboard
       { path: '/', redirect: '/dashboard/analysis' },
@@ -82,6 +83,7 @@ export default [
           {
             path: '/form/advanced-form',
             name: 'advancedform',
+            authority: ['admin'],
             component: './Forms/AdvancedForm',
           },
         ],
@@ -149,6 +151,7 @@ export default [
           {
             path: '/profile/advanced',
             name: 'advanced',
+            authority: ['admin'],
             component: './Profile/AdvancedProfile',
           },
         ],

+ 1 - 0
package.json

@@ -71,6 +71,7 @@
     "eslint-plugin-markdown": "^1.0.0-beta.6",
     "eslint-plugin-react": "^7.11.1",
     "gh-pages": "^1.2.0",
+    "husky": "^0.14.3",
     "lint-staged": "^7.2.0",
     "merge-umi-mock-data": "^0.0.3",
     "mockjs": "^1.0.1-beta3",

+ 3 - 1
src/components/Charts/ChartCard/index.d.ts

@@ -1,5 +1,7 @@
 import * as React from 'react';
-export interface IChartCardProps {
+import { CardProps } from 'antd/lib/card';
+
+export interface IChartCardProps extends CardProps {
   title: React.ReactNode;
   action?: React.ReactNode;
   total?: React.ReactNode | number | (() => React.ReactNode | number);

+ 1 - 1
src/components/Charts/MiniArea/index.d.ts

@@ -21,7 +21,7 @@ export interface IMiniAreaProps {
   xAxis?: IAxis;
   yAxis?: IAxis;
   data: Array<{
-    x: number;
+    x: number | string;
     y: number;
   }>;
 }

+ 1 - 1
src/components/GlobalHeader/RightContent.js

@@ -74,7 +74,7 @@ export default class GlobalHeaderRight extends PureComponent {
         <Menu.Divider />
         <Menu.Item key="logout">
           <Icon type="logout" />
-          退出登录
+          <FormattedMessage id="menu.account.logout" defaultMessage="logout" />
         </Menu.Item>
       </Menu>
     );

+ 0 - 1
src/components/GlobalHeader/index.less

@@ -55,7 +55,6 @@ i.trigger {
     transition: all 0.3s;
     height: 100%;
     > i {
-      font-size: 18px;
       vertical-align: middle;
       color: @text-color;
     }

+ 0 - 1
src/components/NoticeIcon/index.less

@@ -14,7 +14,6 @@
 }
 
 .icon {
-  font-size: 18px;
   padding: 4px;
 }
 

+ 1 - 3
src/components/SiderMenu/SiderMenu.js

@@ -87,7 +87,7 @@ export default class SiderMenu extends PureComponent {
   };
 
   render() {
-    const { logo, collapsed, onCollapse, fixSiderbar, theme } = this.props;
+    const { logo, collapsed, fixSiderbar, theme } = this.props;
     const { openKeys } = this.state;
     const defaultProps = collapsed ? {} : { openKeys };
 
@@ -95,14 +95,12 @@ export default class SiderMenu extends PureComponent {
       [styles.fixSiderbar]: fixSiderbar,
       [styles.light]: theme === 'light',
     });
-
     return (
       <Sider
         trigger={null}
         collapsible
         collapsed={collapsed}
         breakpoint="lg"
-        onCollapse={onCollapse}
         width={256}
         theme={theme}
         className={siderClassName}

+ 2 - 1
src/layouts/Header.less

@@ -2,6 +2,7 @@
   position: fixed;
   top: 0;
   width: 100%;
-  z-index: 9;
+  // > @zindex-tooltip
+  z-index: 1061;
   transition: width 0.2s;
 }

+ 1 - 0
src/locales/en-US.js

@@ -35,6 +35,7 @@ export default {
   'menu.account.center': 'Account Center',
   'menu.account.settings': 'Account Settings',
   'menu.account.trigger': 'Trigger Error',
+  'menu.account.logout': 'Logout',
   'app.home.introduce': 'introduce',
   'app.analysis.test': 'Gongzhuan No.{no} shop',
   'app.analysis.introduce': 'Introduce',

+ 1 - 0
src/locales/zh-CN.js

@@ -37,6 +37,7 @@ export default {
   'menu.account.center': '个人中心',
   'menu.account.settings': '个人设置',
   'menu.account.trigger': '触发报错',
+  'menu.account.logout': '退出登录',
   'app.home.introduce': '介绍',
   'app.analysis.test': '工专路 {no} 号店',
   'app.analysis.introduce': '指标说明',

+ 11 - 18
src/pages/Authorized.js

@@ -2,24 +2,15 @@ import React from 'react';
 import RenderAuthorized from '@/components/Authorized';
 import Exception from '@/components/Exception';
 import { getAuthority } from '@/utils/authority';
-import { matchRoutes } from 'react-router-config';
-import intersection from 'lodash/intersection';
 import { formatMessage } from 'umi/locale';
 import Link from 'umi/link';
+import Redirect from 'umi/redirect';
 
-const Authorized = RenderAuthorized(getAuthority());
+const Authority = getAuthority();
+const Authorized = RenderAuthorized(Authority);
 
-export default ({ children, route, location }) => {
-  const routes = matchRoutes(route.routes, location.pathname);
-  const authorities = [];
-  routes.forEach(item => {
-    if (Array.isArray(item.route.authority) && item.route.authority.length) {
-      authorities.push(item.route.authority);
-    } else if (typeof item.route.authority === 'string' && item.route.authority) {
-      authorities.push([item.route.authority]);
-    }
-  });
-  const noMatch = (
+export default ({ children }) => {
+  let noMatch = (
     <Exception
       type="403"
       desc={formatMessage({ id: 'app.exception.description.403' })}
@@ -27,11 +18,13 @@ export default ({ children, route, location }) => {
       backText={formatMessage({ id: 'app.exception.back' })}
     />
   );
+  // if Authority === ['guest'] redirect to /user/login
+  // You can implement the logic here.
+  if (Authority.join('') === 'guest') {
+    noMatch = <Redirect to="/user/login" />;
+  }
   return (
-    <Authorized
-      authority={authorities.length === 0 ? undefined : intersection(...authorities)}
-      noMatch={noMatch}
-    >
+    <Authorized authority={children.props.route.authority} noMatch={noMatch}>
       {children}
     </Authorized>
   );