1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/rainbond-rainbond-ui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
SecurityLayout.js 1.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
zsl Отправлено 5 лет назад 6f9ac3b
import React from 'react';
import { connect } from 'dva';
import { Redirect } from 'umi';
import PageLoading from '../components/PageLoading';
import { stringify } from 'querystring';
import cookie from '../utils/cookie';
import globalUtil from '../utils/global';
import ErrorBoundary from './ErrorBoundary';
class SecurityLayout extends React.PureComponent {
state = {
isReady: false,
};
componentDidMount() {
const { dispatch } = this.props;
if (dispatch) {
dispatch({
type: 'global/fetchRainbondInfo',
callback: info => {
if (info) {
this.fetchUserInfo();
}
},
});
}
}
fetchUserInfo = () => {
const { dispatch } = this.props;
if (dispatch) {
dispatch({
type: 'user/fetchCurrent',
callback: () => {
this.setState({
isReady: true,
});
},
handleError: () => {
this.setState({
isReady: true,
});
},
});
}
};
render() {
const { children, currentUser, needLogin } = this.props;
const { isReady } = this.state;
// You can replace it to your authentication rule (such as check token exists)
const token = cookie.get('token');
const isLogin = token && currentUser;
const queryString = stringify({
redirect: window.location.href,
});
if (needLogin) {
globalUtil.removeCookie();
return <Redirect to={`/user/login?${queryString}`} />;
}
if (!isReady) {
return <PageLoading />;
}
if (isReady && !isLogin && window.location.pathname !== '/user/login') {
globalUtil.removeCookie();
return <Redirect to={`/user/login?${queryString}`} />;
}
return <ErrorBoundary children={children} />;
}
}
export default connect(({ user, loading, global }) => ({
currentUser: user.currentUser,
loading: loading.models.user,
needLogin: global.needLogin,
}))(SecurityLayout);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/rainbond-rainbond-ui.git
git@gitlife.ru:oschina-mirror/rainbond-rainbond-ui.git
oschina-mirror
rainbond-rainbond-ui
rainbond-rainbond-ui
main