app.tsx 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. import { PageLoading } from '@ant-design/pro-layout';
  2. import { history, useModel } from 'umi';
  3. import { message } from 'antd';
  4. import {
  5. checkToken,
  6. reFreshCheckToken,
  7. getUsersInfo,
  8. } from '@/services/sagacare_service/environment';
  9. // import { projectObj } from '@/config/api.js';
  10. import UserStorage from '@/config/sagacare/sagacare_user';
  11. const loginPath = '/noAuth';
  12. /** 获取用户信息比较慢的时候会展示一个 loading */
  13. export const initialStateConfig = {
  14. loading: <PageLoading />,
  15. };
  16. /**
  17. * @see https://umijs.org/zh-CN/plugins/plugin-initial-state
  18. * */
  19. export async function getInitialState(): Promise<{
  20. // settings?: Partial<LayoutSettings>;
  21. currentUser?: API.CurrentUser;
  22. fetchUser?: () => Promise<API.CurrentUser | undefined>;
  23. projectId?: any;
  24. //loading?: boolean;
  25. //fetchUserInfo?: () => Promise<API.CurrentUser | undefined>;
  26. }> {
  27. const { location } = history;
  28. let currentUser = {};
  29. const checkUser = async () => {
  30. //获取用户信息 查看权限
  31. try {
  32. var userres = await getUsersInfo(); //通过token获取用户信息
  33. } catch (err) {
  34. history.push('/login');
  35. return {};
  36. }
  37. if (userres?.result === 'success') {
  38. var roles = userres.roles || [];
  39. if (
  40. roles.find((item: any) => {
  41. return item.name == '上格云行政端';
  42. })
  43. ) {
  44. //当用户名 密码正确,并且有权限时才跳转
  45. currentUser = {
  46. name: userres.username,
  47. phone: '',
  48. id: userres.userId,
  49. projects: userres.projects,
  50. };
  51. var userObj = UserStorage.getInstance();
  52. userObj.setUser(currentUser);
  53. } else {
  54. message.error('您没有行政端权限');
  55. history.push('/login');
  56. return {};
  57. }
  58. } else {
  59. history.push('/login');
  60. }
  61. };
  62. if (location.pathname !== '/login') {
  63. //console.log("localStorage.getItem('token')", localStorage.getItem('token'));
  64. if (!localStorage.getItem('token')) {
  65. //如何token不存在 则跳到登录页面
  66. history.push('/login');
  67. return {};
  68. } else {
  69. //如果存在token
  70. await checkUser();
  71. }
  72. } else {
  73. return {};
  74. }
  75. let access_token: any = location.query.access_token;
  76. let refresh_token: any = location.query.refresh_token;
  77. //如果有值 存起来
  78. if (access_token) {
  79. localStorage.setItem('access_token', access_token);
  80. console.log("localStorage.getItem('access_token')", localStorage.getItem('access_token'));
  81. }
  82. if (refresh_token) {
  83. localStorage.setItem('refresh_token', refresh_token);
  84. }
  85. //如果没有 取缓存
  86. // if (!refresh_token) {
  87. // refresh_token = localStorage.getItem('refresh_token');
  88. // }
  89. const fetchUser = async () => {
  90. try {
  91. access_token = localStorage.getItem('access_token');
  92. //if (!access_token) return; //随后去掉
  93. //验证acces_token 获取用户数据
  94. const res = await checkToken({ token: access_token });
  95. var resUser = res.data;
  96. } catch (err) {
  97. history.push(loginPath);
  98. }
  99. if (resUser) {
  100. //获取用户信息 并储存
  101. var userObj = UserStorage.getInstance();
  102. userObj.setUser(resUser);
  103. return resUser;
  104. } else {
  105. history.push(loginPath);
  106. return undefined;
  107. }
  108. };
  109. var projectId = 'Pj1101080259';
  110. return {
  111. currentUser,
  112. fetchUser,
  113. projectId,
  114. };
  115. }
  116. export const request = {
  117. requestInterceptors: [
  118. (url: any, options: any) => {
  119. return {
  120. url,
  121. options: {
  122. ...options,
  123. interceptors: true,
  124. headers: {
  125. token: localStorage.getItem('token'),
  126. 'sso-token': localStorage.getItem('token'),
  127. 'X-Forwarded-Token': localStorage.getItem('token'),
  128. },
  129. },
  130. };
  131. },
  132. ],
  133. responseInterceptors: [
  134. async (response: any) => {
  135. return response;
  136. },
  137. ],
  138. errorHandler: (error: any) => {
  139. const { response } = error;
  140. if (!response) {
  141. // message.error('您的网络发生异常,无法连接服务器');
  142. }
  143. throw error;
  144. },
  145. };
  146. // ProLayout 支持的api https://procomponents.ant.design/components/layout
  147. // export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => {
  148. // return {
  149. // rightContentRender: () => <RightContent />,
  150. // disableContentMargin: false,
  151. // waterMarkProps: {
  152. // content: initialState?.currentUser?.name,
  153. // },
  154. // footerRender: () => <Footer />,
  155. // onPageChange: () => {
  156. // const { location } = history;
  157. // // 如果没有登录,重定向到 login
  158. // if (!initialState?.currentUser && location.pathname !== loginPath) {
  159. // history.push(loginPath);
  160. // }
  161. // },
  162. // links: isDev
  163. // ? [
  164. // <Link to="/umi/plugin/openapi" target="_blank">
  165. // <LinkOutlined />
  166. // <span>OpenAPI 文档</span>
  167. // </Link>,
  168. // <Link to="/~docs">
  169. // <BookOutlined />
  170. // <span>业务组件文档</span>
  171. // </Link>,
  172. // ]
  173. // : [],
  174. // menuHeaderRender: undefined,
  175. // // 自定义 403 页面
  176. // // unAccessible: <div>unAccessible</div>,
  177. // // 增加一个 loading 的状态
  178. // childrenRender: (children, props) => {
  179. // // if (initialState?.loading) return <PageLoading />;
  180. // return (
  181. // <>
  182. // {children}
  183. // {!props.location?.pathname?.includes('/login') && (
  184. // <SettingDrawer
  185. // enableDarkTheme
  186. // settings={initialState?.settings}
  187. // onSettingChange={(settings) => {
  188. // setInitialState((preInitialState) => ({
  189. // ...preInitialState,
  190. // settings,
  191. // }));
  192. // }}
  193. // />
  194. // )}
  195. // </>
  196. // );
  197. // },
  198. // ...initialState?.settings,
  199. // };
  200. // };