Browse Source

fix authority parse error

pull/2280/head
陈帅 8 years ago
parent
commit
77d714f2f0
  1. 1
      src/components/Exception/index.d.ts
  2. 3
      src/components/Exception/index.en-US.md
  3. 6
      src/components/Exception/index.js
  4. 1
      src/components/Exception/index.zh-CN.md
  5. 5
      src/pages/Authorized.js
  6. 14
      src/utils/authority.js
  7. 11
      src/utils/utils.js

1
src/components/Exception/index.d.ts

@ -9,6 +9,7 @@ export interface IExceptionProps {
style?: React.CSSProperties;
className?: string;
backText?: React.ReactNode;
redirect?: string;
}
export default class Exception extends React.Component<IExceptionProps, any> {}

3
src/components/Exception/index.en-US.md

@ -16,4 +16,5 @@ title | title | ReactNode | -
desc | supplementary description | ReactNode | -
img | the url of background image | string | -
actions | suggested operations, a default 'Home' link will show if not set | ReactNode | -
linkElement | to specify the element of link | string\|ReactElement | 'a'
linkElement | to specify the element of link | string\|ReactElement | 'a'
redirect | redirect path | string | '/'

6
src/components/Exception/index.js

@ -7,6 +7,7 @@ import styles from './index.less';
class Exception extends React.PureComponent {
static defaultProps = {
backText: 'back to home',
redirect: '/',
};
constructor(props) {
@ -24,6 +25,7 @@ class Exception extends React.PureComponent {
desc,
img,
actions,
redirect,
...rest
} = this.props;
const pageType = type in config ? type : '404';
@ -44,8 +46,8 @@ class Exception extends React.PureComponent {
createElement(
linkElement,
{
to: '/',
href: '/',
to: redirect,
href: redirect,
},
<Button type="primary">{backText}</Button>
)}

1
src/components/Exception/index.zh-CN.md

@ -18,3 +18,4 @@ order: 5
| img | 背景图片地址 | string| -|
| actions | 建议操作,配置此属性时默认的『返回首页』按钮不生效| ReactNode| -|
| linkElement | 定义链接的元素 | string\|ReactElement | 'a' |
| redirect | 返回按钮的跳转地址 | string | '/'

5
src/pages/Authorized.js

@ -15,12 +15,13 @@ export default ({ children }) => {
type="403"
desc={formatMessage({ id: 'app.exception.description.403' })}
linkElement={Link}
backText={formatMessage({ id: 'app.exception.back' })}
redirect="/user/login"
backText="back to login"
/>
);
// if Authority === ['guest'] redirect to /user/login
// You can implement the logic here.
if (Authority.join('') === 'guest') {
if (Authority === 'guest' || Authority.join('') === 'guest') {
noMatch = <Redirect to="/user/login" />;
}
return (

14
src/utils/authority.js

@ -1,16 +1,24 @@
import { isJsonString } from '@/utils/utils';
// use localStorage to store the authority info, which might be sent from server in actual project.
export function getAuthority() {
// return localStorage.getItem('antd-pro-authority') || ['admin', 'user'];
const authorityString = localStorage.getItem('antd-pro-authority');
let authority;
try {
if (isJsonString(authorityString)) {
authority = JSON.parse(authorityString);
} catch (e) {
} else {
authority = [authorityString];
}
return authority || ['admin'];
}
export function setAuthority(authority) {
return localStorage.setItem('antd-pro-authority', JSON.stringify(authority));
let authorityString;
if (isJsonString(authority)) {
authorityString = JSON.stringify(authority);
} else {
authorityString = [authority];
}
return localStorage.setItem('antd-pro-authority', authorityString);
}

11
src/utils/utils.js

@ -181,3 +181,14 @@ export function formatWan(val) {
export function isAntdPro() {
return window.location.hostname === 'preview.pro.ant.design';
}
export function isJsonString(str) {
try {
if (typeof JSON.parse(str) === 'object') {
return true;
}
} catch (e) {
return false;
}
return false;
}

Loading…
Cancel
Save