import React from 'react';
import Redirect from 'umi/redirect';
import { apiUrl } from '@/utils/sldconfig';
export default ({ children }) => {
let cur_time = new Date().getTime();
let start_time = localStorage.getItem('time');
if (typeof start_time == 'undefined' || start_time == null) {
return ;
} else {
if (cur_time - start_time > 58 * 60 * 1000) {
//用户token过期之后重新根据refresh_token获取token(58分钟,token的有效期是60分钟)
let param = new FormData();
param.append('grant_type', 'refresh_token');
param.append('refresh_token', localStorage.getItem('sld_refresh_token'));
fetch(apiUrl + 'v3/adminLogin/oauth/token', {
credentials: 'include',
headers: {
Authorization: 'Basic YWRtaW46YWRtaW4=',
},
method: 'POST',
body: param,
}).then(response => response.json())
.then(res => {
if (res.state == 200) {
localStorage.setItem('sld_token', res.data.access_token);
localStorage.setItem('sld_refresh_token', res.data.refresh_token);
} else {
return ;
}
});
} else if (cur_time - start_time > ((24 * 60 * 15 - 2) * 60 * 1000)) {
//用户登陆过期之后直接跳转登录页面(14天23小时58分钟,refresh_token的有效期是15天)
return ;
}
}
//如果redirect在用户拥有的路由内,则跳转,否则跳转第一个页面
if (localStorage.sld_all_routes != undefined) {
let all_routes = JSON.parse(localStorage.sld_all_routes);
let contain_redirect_flag = false;
for (let i = 0; i < all_routes.length; i++) {
if (children.props.location.pathname.indexOf("/manage_product/") >-1 || children.props.location.pathname.indexOf(all_routes[i]) > -1) {
contain_redirect_flag = true;
break;
}
}
if (!contain_redirect_flag) {
return ;
}
}
return children;
};