|
@@ -1,10 +1,8 @@
|
|
|
-import type { Settings as LayoutSettings } from '@ant-design/pro-layout';
|
|
|
import { PageLoading } from '@ant-design/pro-layout';
|
|
|
-import { history } from 'umi';
|
|
|
-import { currentUser as queryCurrentUser } from './services/ant-design-pro/api';
|
|
|
-import defaultSettings from '../config/defaultSettings';
|
|
|
-
|
|
|
-const loginPath = '/user/login';
|
|
|
+import { history, useModel } from 'umi';
|
|
|
+import { checkToken, reFreshCheckToken } from '@/services/ant-design-pro/environment';
|
|
|
+import userData from '@/config/user';
|
|
|
+const loginPath = '/noAuth';
|
|
|
|
|
|
/** 获取用户信息比较慢的时候会展示一个 loading */
|
|
|
export const initialStateConfig = {
|
|
@@ -15,37 +13,124 @@ export const initialStateConfig = {
|
|
|
* @see https://umijs.org/zh-CN/plugins/plugin-initial-state
|
|
|
* */
|
|
|
export async function getInitialState(): Promise<{
|
|
|
- settings?: Partial<LayoutSettings>;
|
|
|
+ // settings?: Partial<LayoutSettings>;
|
|
|
currentUser?: API.CurrentUser;
|
|
|
- loading?: boolean;
|
|
|
- fetchUserInfo?: () => Promise<API.CurrentUser | undefined>;
|
|
|
+ fetchUser?: () => Promise<API.CurrentUser | undefined>;
|
|
|
+ //loading?: boolean;
|
|
|
+ //fetchUserInfo?: () => Promise<API.CurrentUser | undefined>;
|
|
|
}> {
|
|
|
- const fetchUserInfo = async () => {
|
|
|
+ debugger;
|
|
|
+ const { location } = history;
|
|
|
+
|
|
|
+ let access_token: any = location.query.access_token;
|
|
|
+ let refresh_token: any = location.query.refresh_token;
|
|
|
+
|
|
|
+ //如果有值 存起来
|
|
|
+ if (access_token) {
|
|
|
+ localStorage.setItem('access_token', access_token);
|
|
|
+ console.log("localStorage.getItem('access_token')", localStorage.getItem('access_token'));
|
|
|
+ }
|
|
|
+ if (refresh_token) {
|
|
|
+ localStorage.setItem('refresh_token', refresh_token);
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果没有 取缓存
|
|
|
+ // if (!refresh_token) {
|
|
|
+ // refresh_token = localStorage.getItem('refresh_token');
|
|
|
+ // }
|
|
|
+
|
|
|
+ const fetchUser = async () => {
|
|
|
try {
|
|
|
- const msg = await queryCurrentUser();
|
|
|
- return msg.data;
|
|
|
- } catch (error) {
|
|
|
- // history.push(loginPath);
|
|
|
+ debugger;
|
|
|
+ access_token = localStorage.getItem('access_token');
|
|
|
+ const res = await checkToken({ token: access_token });
|
|
|
+ var resUser = res.data;
|
|
|
+ } catch (err) {
|
|
|
+ history.push(loginPath);
|
|
|
}
|
|
|
|
|
|
- return undefined;
|
|
|
+ if (resUser) {
|
|
|
+ var userObj = userData.getInstance();
|
|
|
+ // console.log('user.name', user.age);
|
|
|
+ userObj.setUser(resUser);
|
|
|
+ return resUser;
|
|
|
+ } else {
|
|
|
+ history.push(loginPath);
|
|
|
+ return undefined;
|
|
|
+ }
|
|
|
};
|
|
|
- // 如果是登录页面,不执行
|
|
|
- if (history.location.pathname !== loginPath) {
|
|
|
- // const currentUser = await fetchUserInfo();
|
|
|
|
|
|
- return {
|
|
|
- fetchUserInfo,
|
|
|
- //currentUser,
|
|
|
- settings: defaultSettings,
|
|
|
- };
|
|
|
- }
|
|
|
+ const currentUser = await fetchUser();
|
|
|
+
|
|
|
+ const reFreshUser = async () => {
|
|
|
+ refresh_token = localStorage.getItem('refresh_token');
|
|
|
+
|
|
|
+ const res = await reFreshCheckToken({
|
|
|
+ zjfreshtoken: refresh_token,
|
|
|
+ });
|
|
|
+ if (res.refresh_token) {
|
|
|
+ console.log('refresh_token', res.refresh_token);
|
|
|
+ localStorage.setItem('refresh_token', res.refresh_token);
|
|
|
+ } else {
|
|
|
+ //如果刷新token失败
|
|
|
+ //history.push(loginPath);
|
|
|
+ }
|
|
|
+ //20分钟后再执行
|
|
|
+ setTimeout(() => {
|
|
|
+ reFreshUser();
|
|
|
+ }, 1200000);
|
|
|
+ };
|
|
|
+
|
|
|
+ reFreshUser();
|
|
|
+
|
|
|
+ // || {
|
|
|
+ // companyId: '245e7060643811eb934c0237aedb39a6',
|
|
|
+ // createDate: 1642388952000,
|
|
|
+ // depName: '[["研发算法组","上格云","博锐尚格科技股份有限公司"]]',
|
|
|
+ // firstUseTime: '2020-10-16 18:37:05',
|
|
|
+ // id: '2d2440710d4548f3afa55c4e8244538e',
|
|
|
+ // job: '研发工程师',
|
|
|
+ // manageUserType: 1,
|
|
|
+ // name: '赵小静',
|
|
|
+ // phone: '18801040736',
|
|
|
+ // projectId: 'Pj1101080259',
|
|
|
+ // status: 2,
|
|
|
+ // type: 1,
|
|
|
+ // updateDate: 1642388952000,
|
|
|
+ // };
|
|
|
+
|
|
|
return {
|
|
|
- fetchUserInfo,
|
|
|
- settings: defaultSettings,
|
|
|
+ currentUser,
|
|
|
+ fetchUser,
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+export const request = {
|
|
|
+ requestInterceptors: [
|
|
|
+ (url: any, options: any) => {
|
|
|
+ return {
|
|
|
+ url,
|
|
|
+ options: {
|
|
|
+ ...options,
|
|
|
+ interceptors: true,
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ responseInterceptors: [
|
|
|
+ async (response: any) => {
|
|
|
+ return response;
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ errorHandler: (error: any) => {
|
|
|
+ const { response } = error;
|
|
|
+ if (!response) {
|
|
|
+ // message.error('您的网络发生异常,无法连接服务器');
|
|
|
+ }
|
|
|
+ throw error;
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
// ProLayout 支持的api https://procomponents.ant.design/components/layout
|
|
|
// export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => {
|
|
|
// return {
|