text: import React from 'react';
  import Redirect from 'umi/redirect';
  import pathToRegexp from 'path-to-regexp';
  import { connect } from 'dva';
  import Authorized from '@/utils/Authorized';
  import { getAuthority } from '@/utils/authority';
  import Exception403 from '@/pages/Exception/403';
  
  // 
  function AuthComponent({ children, location, routerData }) {
    const auth = getAuthority();
    const isLogin = auth && auth[0] !== 'guest';
    const getRouteAuthority = (path, routeData) => {
      let authorities;
      routeData.forEach(route => {
        // match prefix
        if (pathToRegexp(`${route.path}(.*)`).test(path)) {
          authorities = route.authority || authorities;
  
          // get children authority recursively
          if (route.routes) {
            authorities = getRouteAuthority(path, route.routes) || authorities;
          }
        }
      });
      return authorities;
    };
    return (
      <Authorized
        authority={getRouteAuthority(location.pathname, routerData)}
        noMatch={isLogin ? <Exception403 /> : <Redirect to="/user/login" />}
      >
        {children}
      </Authorized>
    );
  }
  export default connect(({ menu: menuModel }) => ({
    routerData: menuModel.routerData,
  }))(AuthComponent);
  