import { PageLoading } from '@ant-design/pro-layout';
import { history, useModel } from 'umi';
import { checkToken, reFreshCheckToken, queryUser } from '@/services/sagacare_service/environment';
import { projectObj } from '@/config/api.js';
import { decrypt, deal_locationsearch } from '@/config/screate.js';
import UserStorage from '@/config/sagacare/sagacare_user';
const loginPath = '/noAuth';
/** 获取用户信息比较慢的时候会展示一个 loading */
export const initialStateConfig = {
loading: ,
};
/**
* @see https://umijs.org/zh-CN/plugins/plugin-initial-state
* */
export async function getInitialState(): Promise<{
// settings?: Partial;
currentUser?: API.CurrentUser;
fetchUser?: () => Promise;
//loading?: boolean;
//fetchUserInfo?: () => Promise;
}> {
const { location } = history;
let currentUser = {};
let access_token: any = location.query.access_token;
let refresh_token: any = location.query.refresh_token;
var dealRes = deal_locationsearch();
var persagyToken = dealRes[0];
let deCode = decodeURIComponent(persagyToken);
let userName = persagyToken && decrypt(deCode);
//如果有值 存起来
if (access_token) {
localStorage.setItem('access_token', access_token);
}
if (refresh_token) {
localStorage.setItem('refresh_token', refresh_token);
}
const fetchUser = async () => {
try {
access_token = localStorage.getItem('access_token');
//if (!access_token) return; //随后去掉
//验证acces_token 获取用户数据
const res = await checkToken({ token: access_token });
var resUser = res.data;
} catch (err) {
history.push(loginPath);
}
if (resUser) {
//获取用户信息 并储存
var userObj = UserStorage.getInstance();
userObj.setUser(resUser);
return resUser;
} else {
// history.push(loginPath);
return undefined;
}
};
const queryUserFunc = async () => {
try {
//验证acces_token 获取用户数据
const res2 = await queryUser({ criteria: { username: userName } });
var resUser = res2.content[0];
} catch (err) {
history.push(loginPath);
}
if (resUser) {
//获取用户信息 并储存
var userObj = UserStorage.getInstance();
userObj.setUser(resUser);
return resUser;
} else {
history.push(loginPath);
return undefined;
}
};
//projectId = 'Pj1101080259';
if (projectObj.projectId == 'Pj3301100002') {
//之江项目 验证token
if (userName) {
currentUser = await queryUserFunc();
} else {
history.push(loginPath);
}
} else {
//非之江项目
let tempUser = {
name: '行政测试',
phone: '17611228068',
id: '9a1ecfbacb6b4f249bf2dd3ec7793ead',
};
var userObj = UserStorage.getInstance();
userObj.setUser(tempUser);
}
const reFreshUser = async () => {
refresh_token = localStorage.getItem('refresh_token');
//刷新token 续约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);
localStorage.setItem('access_token', res.access_token);
} else {
//如果刷新token失败
//history.push(loginPath);
}
//1分钟后再执行
setTimeout(() => {
// reFreshUser();
}, 60000);
};
return {
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 {
// rightContentRender: () => ,
// disableContentMargin: false,
// waterMarkProps: {
// content: initialState?.currentUser?.name,
// },
// footerRender: () => ,
// onPageChange: () => {
// const { location } = history;
// // 如果没有登录,重定向到 login
// if (!initialState?.currentUser && location.pathname !== loginPath) {
// history.push(loginPath);
// }
// },
// links: isDev
// ? [
//
//
// OpenAPI 文档
// ,
//
//
// 业务组件文档
// ,
// ]
// : [],
// menuHeaderRender: undefined,
// // 自定义 403 页面
// // unAccessible: unAccessible
,
// // 增加一个 loading 的状态
// childrenRender: (children, props) => {
// // if (initialState?.loading) return ;
// return (
// <>
// {children}
// {!props.location?.pathname?.includes('/login') && (
// {
// setInitialState((preInitialState) => ({
// ...preInitialState,
// settings,
// }));
// }}
// />
// )}
// >
// );
// },
// ...initialState?.settings,
// };
// };