Commit fea90487 authored by 陈帅's avatar 陈帅

fix #2157 add redirect when no login

parent 1d8e1d91
......@@ -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',
},
],
......
......@@ -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>
);
......
......@@ -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',
......
......@@ -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': '指标说明',
......
......@@ -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>
);
......
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