xydata-tools 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,53 +6,239 @@ import React, { useEffect } from 'react';
6
6
  import { getSessionStorage, setSessionStorage, removeSessionStorage } from "../../utils/token.js";
7
7
  import { message, Spin } from 'antd';
8
8
  import { queryAaaCurrent, queryCurrent, accountLogout, accountAAALogout } from "../../services/service.js";
9
+
10
+ // ========== 公共辅助函数 ==========
11
+
12
+ /**
13
+ * 安全解析环境数据
14
+ * 从 sessionStorage 中读取并解析环境配置数据
15
+ * @returns {Object} 环境数据对象,解析失败时返回空对象
16
+ */
17
+ var getEnvData = function getEnvData() {
18
+ var envDataStr = getSessionStorage('env_data');
19
+ if (!envDataStr) return {};
20
+ try {
21
+ return JSON.parse(envDataStr);
22
+ } catch (e) {
23
+ console.error('解析 env_data 失败:', e);
24
+ return {};
25
+ }
26
+ };
27
+
28
+ /**
29
+ * 获取通用请求头
30
+ * @returns {Object} 包含 SID 和 service 的请求头对象
31
+ */
32
+ var getCommonHeaders = function getCommonHeaders() {
33
+ var service = getSessionStorage('service');
34
+ return {
35
+ SID: SID,
36
+ service: service
37
+ };
38
+ };
39
+
40
+ /**
41
+ * 保存 Token 并跳转到重定向地址
42
+ * @param {string} token - 用户认证令牌
43
+ */
44
+ var saveTokenAndRedirect = function saveTokenAndRedirect(token) {
45
+ setSessionStorage('Token', token);
46
+ var redirectUrl = getSessionStorage('sso_redirect_url');
47
+ if (redirectUrl) {
48
+ window.location.href = redirectUrl;
49
+ } else {
50
+ message.error('统一登陆跳转异常');
51
+ }
52
+ };
53
+
54
+ /**
55
+ * SSO 新版登录处理
56
+ * 调用新版 SSO 登录接口获取 token
57
+ * @async
58
+ */
59
+ var ssoTypeByNew = /*#__PURE__*/function () {
60
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
61
+ var commonHeaders, response, result, href;
62
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
63
+ while (1) switch (_context.prev = _context.next) {
64
+ case 0:
65
+ commonHeaders = getCommonHeaders();
66
+ _context.prev = 1;
67
+ _context.next = 4;
68
+ return fetch('/auth/login', {
69
+ headers: commonHeaders,
70
+ method: 'POST'
71
+ });
72
+ case 4:
73
+ response = _context.sent;
74
+ _context.next = 7;
75
+ return response.json();
76
+ case 7:
77
+ result = _context.sent;
78
+ if (result.rspCode === '000000') {
79
+ saveTokenAndRedirect(result.data);
80
+ } else {
81
+ message.error(result.rspMsg);
82
+ if (result.data) {
83
+ href = result.data + '?callback=' + encodeURIComponent(window.location.href);
84
+ setTimeout(function () {
85
+ window.location.href = href;
86
+ }, 1000);
87
+ } else if (result.rspCode === '999000') {
88
+ location.reload();
89
+ }
90
+ }
91
+ _context.next = 15;
92
+ break;
93
+ case 11:
94
+ _context.prev = 11;
95
+ _context.t0 = _context["catch"](1);
96
+ console.error('/auth/login 错误:', _context.t0);
97
+ message.error('网络请求失败,请稍后重试');
98
+ case 15:
99
+ case "end":
100
+ return _context.stop();
101
+ }
102
+ }, _callee, null, [[1, 11]]);
103
+ }));
104
+ return function ssoTypeByNew() {
105
+ return _ref.apply(this, arguments);
106
+ };
107
+ }();
108
+
109
+ /**
110
+ * 获取 SSO 跳转地址
111
+ * 从服务器获取 SSO 登录页面地址并跳转
112
+ * @async
113
+ */
114
+ var fetchSSO = /*#__PURE__*/function () {
115
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
116
+ var commonHeaders, response, data;
117
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
118
+ while (1) switch (_context2.prev = _context2.next) {
119
+ case 0:
120
+ commonHeaders = getCommonHeaders();
121
+ _context2.prev = 1;
122
+ _context2.next = 4;
123
+ return fetch('/auth/sso', {
124
+ headers: commonHeaders
125
+ });
126
+ case 4:
127
+ response = _context2.sent;
128
+ if (!(response.status === 200)) {
129
+ _context2.next = 12;
130
+ break;
131
+ }
132
+ _context2.next = 8;
133
+ return response.text();
134
+ case 8:
135
+ data = _context2.sent;
136
+ window.location.href = data;
137
+ _context2.next = 13;
138
+ break;
139
+ case 12:
140
+ message.error('接口异常,请联系管理员');
141
+ case 13:
142
+ _context2.next = 19;
143
+ break;
144
+ case 15:
145
+ _context2.prev = 15;
146
+ _context2.t0 = _context2["catch"](1);
147
+ console.error('/auth/sso 错误:', _context2.t0);
148
+ message.error('网络请求失败,请稍后重试');
149
+ case 19:
150
+ case "end":
151
+ return _context2.stop();
152
+ }
153
+ }, _callee2, null, [[1, 15]]);
154
+ }));
155
+ return function fetchSSO() {
156
+ return _ref2.apply(this, arguments);
157
+ };
158
+ }();
159
+
160
+ /**
161
+ * SSO 旧版登录处理
162
+ * 处理 URL 中的 code 参数,获取 token 或跳转到 SSO 登录页
163
+ * @async
164
+ */
165
+ var ssoTypeByOld = /*#__PURE__*/function () {
166
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
167
+ var urlParams, code, commonHeaders, response, data, token;
168
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
169
+ while (1) switch (_context3.prev = _context3.next) {
170
+ case 0:
171
+ urlParams = new URLSearchParams(window.location.search);
172
+ code = urlParams.get('code');
173
+ if (!code) {
174
+ _context3.next = 21;
175
+ break;
176
+ }
177
+ commonHeaders = getCommonHeaders();
178
+ _context3.prev = 4;
179
+ _context3.next = 7;
180
+ return fetch('/auth/token?code=' + encodeURIComponent(code), {
181
+ headers: commonHeaders
182
+ });
183
+ case 7:
184
+ response = _context3.sent;
185
+ _context3.next = 10;
186
+ return response.json();
187
+ case 10:
188
+ data = _context3.sent;
189
+ token = data.access_token || (data.rspCode === '000000' ? data.data : null);
190
+ if (token) {
191
+ saveTokenAndRedirect(token);
192
+ } else {
193
+ message.error(data.rspMsg);
194
+ }
195
+ _context3.next = 19;
196
+ break;
197
+ case 15:
198
+ _context3.prev = 15;
199
+ _context3.t0 = _context3["catch"](4);
200
+ console.error('/auth/token 错误:', _context3.t0);
201
+ message.error('网络请求失败,请稍后重试');
202
+ case 19:
203
+ _context3.next = 22;
204
+ break;
205
+ case 21:
206
+ fetchSSO();
207
+ case 22:
208
+ case "end":
209
+ return _context3.stop();
210
+ }
211
+ }, _callee3, null, [[4, 15]]);
212
+ }));
213
+ return function ssoTypeByOld() {
214
+ return _ref3.apply(this, arguments);
215
+ };
216
+ }();
217
+
218
+ /**
219
+ * 清理会话数据
220
+ * 清除 Token 和 SSO 重定向地址
221
+ */
222
+ var removeSessionData = function removeSessionData() {
223
+ removeSessionStorage('Token');
224
+ removeSessionStorage('sso_redirect_url');
225
+ };
226
+
227
+ // ========== 组件定义 ==========
228
+
9
229
  var XyAuthLayout = function XyAuthLayout(props) {
10
230
  var children = props.children,
11
231
  propsEnvData = props.envData,
12
232
  propsService = props.service,
13
233
  getUserOk = props.getUserOk,
14
234
  getUserError = props.getUserError;
15
- // 安全解析 JSON,避免解析异常
16
- var getEnvData = function getEnvData() {
17
- if (propsEnvData) return propsEnvData;
18
- var envDataStr = getSessionStorage('env_data');
19
- if (!envDataStr) return {};
20
- try {
21
- return JSON.parse(envDataStr);
22
- } catch (e) {
23
- console.error('解析 env_data 失败:', e);
24
- return {};
25
- }
26
- };
27
- var envData = getEnvData();
235
+
236
+ // 获取环境数据,优先使用 props 传入的
237
+ var envData = propsEnvData || getEnvData();
28
238
  var service = propsService || getSessionStorage('service');
29
239
  var token = getSessionStorage('Token');
30
240
  var loginType = envData.login_type || 'BOTH';
31
241
  var pathName = window.location.pathname;
32
-
33
- // 通用请求头参数
34
- var commonHeaders = {
35
- SID: SID,
36
- service: service
37
- };
38
-
39
- // 统一的错误处理
40
- var handleError = function handleError(error) {
41
- var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
42
- console.error(context ? "".concat(context, ":") : '错误:', error);
43
- message.error('网络请求失败,请稍后重试');
44
- };
45
-
46
- // 保存 Token 并跳转
47
- var saveTokenAndRedirect = function saveTokenAndRedirect(token) {
48
- setSessionStorage('Token', token);
49
- var redirectUrl = getSessionStorage('sso_redirect_url');
50
- if (redirectUrl) {
51
- window.location.href = redirectUrl;
52
- } else {
53
- message.error('统一登陆跳转异常');
54
- }
55
- };
56
242
  useEffect(function () {
57
243
  if (!token) {
58
244
  // 当登录方式设为两端登录时,可在路径加上sso进行统一登陆,当登录方式固定为SSO时,直接跳转到SSO登录
@@ -67,228 +253,64 @@ var XyAuthLayout = function XyAuthLayout(props) {
67
253
  getUserinfo();
68
254
  }
69
255
  }, []);
70
-
71
- // 处理 401 未授权错误(登录过期)
72
- var handleUnauthorized = function handleUnauthorized() {
73
- var actualLoginType = loginType;
74
- if (loginType === 'BOTH') {
75
- var redirectUrl = getSessionStorage('sso_redirect_url');
76
- actualLoginType = redirectUrl ? 'SSO' : 'AAA';
77
- }
78
-
79
- // 清理本地存储
80
- removeSessionStorage('Token');
81
- removeSessionStorage('sso_redirect_url');
82
-
83
- // 根据实际登录类型重定向到对应的登录页面
84
- if (actualLoginType === 'SSO') {
85
- // SSO 登录过期,重新进行 SSO 登录流程
86
- setSessionStorage('sso_redirect_url', window.location.href);
87
- envData.sso_type === 'new' ? ssoTypeByNew() : ssoTypeByOld();
88
- } else {
89
- // AAA 登录过期,跳转到 AAA 登录页面
90
- window.location.href = "".concat(window.publicPath, "user/login");
91
- }
92
- };
93
256
  var getUserinfo = /*#__PURE__*/function () {
94
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
257
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
95
258
  var response;
96
- return _regeneratorRuntime().wrap(function _callee$(_context) {
97
- while (1) switch (_context.prev = _context.next) {
259
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
260
+ while (1) switch (_context4.prev = _context4.next) {
98
261
  case 0:
99
- _context.prev = 0;
262
+ _context4.prev = 0;
100
263
  if (!(loginType === 'SSO')) {
101
- _context.next = 7;
264
+ _context4.next = 7;
102
265
  break;
103
266
  }
104
- _context.next = 4;
267
+ _context4.next = 4;
105
268
  return queryCurrent({});
106
269
  case 4:
107
- _context.t0 = _context.sent;
108
- _context.next = 10;
270
+ _context4.t0 = _context4.sent;
271
+ _context4.next = 10;
109
272
  break;
110
273
  case 7:
111
- _context.next = 9;
274
+ _context4.next = 9;
112
275
  return queryAaaCurrent({});
113
276
  case 9:
114
- _context.t0 = _context.sent;
277
+ _context4.t0 = _context4.sent;
115
278
  case 10:
116
- response = _context.t0;
279
+ response = _context4.t0;
117
280
  if (!((response === null || response === void 0 ? void 0 : response.status) === 401 || (response === null || response === void 0 ? void 0 : response.rspCode) === '401')) {
118
- _context.next = 17;
281
+ _context4.next = 17;
119
282
  break;
120
283
  }
121
284
  if (!getUserError) {
122
- _context.next = 15;
285
+ _context4.next = 15;
123
286
  break;
124
287
  }
125
288
  getUserError(response);
126
- return _context.abrupt("return");
289
+ return _context4.abrupt("return");
127
290
  case 15:
128
291
  // 否则自动处理登录过期
129
- handleUnauthorized();
130
- return _context.abrupt("return");
292
+ handleUnauthorized(envData);
293
+ return _context4.abrupt("return");
131
294
  case 17:
132
295
  if (response.rspCode === '000000') {
133
296
  getUserOk && getUserOk(response.data);
134
297
  } else {
135
298
  getUserError && getUserError(response);
136
299
  }
137
- _context.next = 24;
300
+ _context4.next = 24;
138
301
  break;
139
302
  case 20:
140
- _context.prev = 20;
141
- _context.t1 = _context["catch"](0);
142
- console.error('获取用户信息失败:', _context.t1);
143
- getUserError && getUserError(_context.t1);
303
+ _context4.prev = 20;
304
+ _context4.t1 = _context4["catch"](0);
305
+ console.error('获取用户信息失败:', _context4.t1);
306
+ getUserError && getUserError(_context4.t1);
144
307
  case 24:
145
- case "end":
146
- return _context.stop();
147
- }
148
- }, _callee, null, [[0, 20]]);
149
- }));
150
- return function getUserinfo() {
151
- return _ref.apply(this, arguments);
152
- };
153
- }();
154
- var ssoTypeByNew = /*#__PURE__*/function () {
155
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
156
- var response, result, href;
157
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
158
- while (1) switch (_context2.prev = _context2.next) {
159
- case 0:
160
- _context2.prev = 0;
161
- _context2.next = 3;
162
- return fetch('/auth/login', {
163
- headers: commonHeaders,
164
- method: 'POST'
165
- });
166
- case 3:
167
- response = _context2.sent;
168
- _context2.next = 6;
169
- return response.json();
170
- case 6:
171
- result = _context2.sent;
172
- if (result.rspCode === '000000') {
173
- saveTokenAndRedirect(result.data);
174
- } else {
175
- message.error(result.rspMsg);
176
- if (result.data) {
177
- href = result.data + '?callback=' + encodeURIComponent(window.location.href);
178
- setTimeout(function () {
179
- window.location.href = href;
180
- }, 1000);
181
- } else if (result.rspCode === '999000') {
182
- // 服务器响应超时
183
- location.reload();
184
- }
185
- }
186
- _context2.next = 13;
187
- break;
188
- case 10:
189
- _context2.prev = 10;
190
- _context2.t0 = _context2["catch"](0);
191
- handleError(_context2.t0, '/auth/login');
192
- case 13:
193
- case "end":
194
- return _context2.stop();
195
- }
196
- }, _callee2, null, [[0, 10]]);
197
- }));
198
- return function ssoTypeByNew() {
199
- return _ref2.apply(this, arguments);
200
- };
201
- }();
202
- var fetchSSO = /*#__PURE__*/function () {
203
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
204
- var response, data;
205
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
206
- while (1) switch (_context3.prev = _context3.next) {
207
- case 0:
208
- _context3.prev = 0;
209
- _context3.next = 3;
210
- return fetch('/auth/sso', {
211
- headers: commonHeaders
212
- });
213
- case 3:
214
- response = _context3.sent;
215
- if (!(response.status === 200)) {
216
- _context3.next = 11;
217
- break;
218
- }
219
- _context3.next = 7;
220
- return response.text();
221
- case 7:
222
- data = _context3.sent;
223
- window.location.href = data;
224
- _context3.next = 12;
225
- break;
226
- case 11:
227
- message.error('接口异常,请联系管理员');
228
- case 12:
229
- _context3.next = 17;
230
- break;
231
- case 14:
232
- _context3.prev = 14;
233
- _context3.t0 = _context3["catch"](0);
234
- handleError(_context3.t0, '/auth/sso');
235
- case 17:
236
- case "end":
237
- return _context3.stop();
238
- }
239
- }, _callee3, null, [[0, 14]]);
240
- }));
241
- return function fetchSSO() {
242
- return _ref3.apply(this, arguments);
243
- };
244
- }();
245
- var ssoTypeByOld = /*#__PURE__*/function () {
246
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
247
- var urlParams, code, response, data, _token;
248
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
249
- while (1) switch (_context4.prev = _context4.next) {
250
- case 0:
251
- urlParams = new URLSearchParams(window.location.search);
252
- code = urlParams.get('code');
253
- if (!code) {
254
- _context4.next = 19;
255
- break;
256
- }
257
- _context4.prev = 3;
258
- _context4.next = 6;
259
- return fetch('/auth/token?code=' + encodeURIComponent(code), {
260
- headers: commonHeaders
261
- });
262
- case 6:
263
- response = _context4.sent;
264
- _context4.next = 9;
265
- return response.json();
266
- case 9:
267
- data = _context4.sent;
268
- _token = data.access_token || (data.rspCode === '000000' ? data.data : null);
269
- if (_token) {
270
- saveTokenAndRedirect(_token);
271
- } else {
272
- message.error(data.rspMsg);
273
- }
274
- _context4.next = 17;
275
- break;
276
- case 14:
277
- _context4.prev = 14;
278
- _context4.t0 = _context4["catch"](3);
279
- handleError(_context4.t0, '/auth/token');
280
- case 17:
281
- _context4.next = 20;
282
- break;
283
- case 19:
284
- fetchSSO();
285
- case 20:
286
308
  case "end":
287
309
  return _context4.stop();
288
310
  }
289
- }, _callee4, null, [[3, 14]]);
311
+ }, _callee4, null, [[0, 20]]);
290
312
  }));
291
- return function ssoTypeByOld() {
313
+ return function getUserinfo() {
292
314
  return _ref4.apply(this, arguments);
293
315
  };
294
316
  }();
@@ -313,22 +335,33 @@ var XyAuthLayout = function XyAuthLayout(props) {
313
335
  };
314
336
  export default XyAuthLayout;
315
337
 
316
- // 退出登录的工具函数
338
+ // ========== 导出的工具函数 ==========
339
+
340
+ /**
341
+ * 退出登录的工具函数
342
+ * 根据登录类型执行相应的退出登录操作并跳转到登录页
343
+ * @async
344
+ * @param {string} [loginType='BOTH'] - 登录类型: 'SSO' | 'AAA' | 'BOTH'
345
+ * @example
346
+ * // AAA 登录退出
347
+ * await logout('AAA');
348
+ *
349
+ * // SSO 登录退出
350
+ * await logout('SSO');
351
+ *
352
+ * // 自动判断登录类型
353
+ * await logout('BOTH');
354
+ */
317
355
  export var logout = /*#__PURE__*/function () {
318
356
  var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
319
357
  var loginType,
320
358
  actualLoginType,
321
359
  redirectUrl,
322
360
  res,
323
- removeSessionData,
324
361
  _args5 = arguments;
325
362
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
326
363
  while (1) switch (_context5.prev = _context5.next) {
327
364
  case 0:
328
- removeSessionData = function _removeSessionData() {
329
- removeSessionStorage('Token');
330
- removeSessionStorage('sso_redirect_url');
331
- };
332
365
  loginType = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : 'BOTH';
333
366
  // 当 loginType 为 BOTH 时,根据 sessionStorage 中的 'sso_redirect_url' 判断实际登录方式
334
367
  // 有 'sso_redirect_url' 说明使用的是 SSO 登录,否则是 AAA 登录
@@ -338,47 +371,80 @@ export var logout = /*#__PURE__*/function () {
338
371
  actualLoginType = redirectUrl ? 'SSO' : 'AAA';
339
372
  }
340
373
  if (!(actualLoginType === 'AAA')) {
341
- _context5.next = 17;
374
+ _context5.next = 16;
342
375
  break;
343
376
  }
344
- _context5.prev = 5;
345
- _context5.next = 8;
377
+ _context5.prev = 4;
378
+ _context5.next = 7;
346
379
  return accountAAALogout({});
347
- case 8:
380
+ case 7:
348
381
  removeSessionData();
349
- _context5.next = 14;
382
+ _context5.next = 13;
350
383
  break;
351
- case 11:
352
- _context5.prev = 11;
353
- _context5.t0 = _context5["catch"](5);
384
+ case 10:
385
+ _context5.prev = 10;
386
+ _context5.t0 = _context5["catch"](4);
354
387
  console.error('AAA 退出登录失败:', _context5.t0);
355
- case 14:
388
+ case 13:
356
389
  window.location.href = "".concat(window.publicPath || '/', "user/login");
357
- _context5.next = 28;
390
+ _context5.next = 27;
358
391
  break;
359
- case 17:
360
- _context5.prev = 17;
361
- _context5.next = 20;
392
+ case 16:
393
+ _context5.prev = 16;
394
+ _context5.next = 19;
362
395
  return accountLogout({});
363
- case 20:
396
+ case 19:
364
397
  res = _context5.sent;
365
398
  removeSessionData();
366
399
  if (res) {
367
400
  window.location.href = res;
368
401
  }
369
- _context5.next = 28;
402
+ _context5.next = 27;
370
403
  break;
371
- case 25:
372
- _context5.prev = 25;
373
- _context5.t1 = _context5["catch"](17);
404
+ case 24:
405
+ _context5.prev = 24;
406
+ _context5.t1 = _context5["catch"](16);
374
407
  console.error('SSO 退出登录失败:', _context5.t1);
375
- case 28:
408
+ case 27:
376
409
  case "end":
377
410
  return _context5.stop();
378
411
  }
379
- }, _callee5, null, [[5, 11], [17, 25]]);
412
+ }, _callee5, null, [[4, 10], [16, 24]]);
380
413
  }));
381
414
  return function logout() {
382
415
  return _ref5.apply(this, arguments);
383
416
  };
384
- }();
417
+ }();
418
+
419
+ /**
420
+ * 处理 401 未授权错误(登录过期)的工具函数
421
+ * 清理本地存储并根据登录类型重定向到相应的登录页面
422
+ * @param {Object} envData - 环境配置数据
423
+ * @param {string} [envData.login_type] - 登录类型: 'SSO' | 'AAA' | 'BOTH'
424
+ * @param {string} [envData.sso_type] - SSO 类型: 'new' | 'old'
425
+ * @example
426
+ * // 在请求拦截器中使用
427
+ * if (response.status === 401) {
428
+ * handleUnauthorized({ login_type: 'BOTH', sso_type: 'new' });
429
+ * }
430
+ */
431
+ export var handleUnauthorized = function handleUnauthorized(envData) {
432
+ var actualLoginType = envData.login_type || 'BOTH';
433
+ if (actualLoginType === 'BOTH') {
434
+ var redirectUrl = getSessionStorage('sso_redirect_url');
435
+ actualLoginType = redirectUrl ? 'SSO' : 'AAA';
436
+ }
437
+
438
+ // 清理本地存储
439
+ removeSessionData();
440
+
441
+ // 根据实际登录类型重定向到对应的登录页面
442
+ if (actualLoginType === 'SSO') {
443
+ // SSO 登录过期,重新进行 SSO 登录流程
444
+ setSessionStorage('sso_redirect_url', window.location.href);
445
+ envData.sso_type === 'new' ? ssoTypeByNew() : ssoTypeByOld();
446
+ } else {
447
+ // AAA 登录过期,跳转到 AAA 登录页面
448
+ window.location.href = "".concat(window.publicPath, "user/login");
449
+ }
450
+ };
@@ -1,3 +1,7 @@
1
1
  export default XyAuthLayout;
2
2
  export function logout(loginType?: string): Promise<void>;
3
+ export function handleUnauthorized(envData: {
4
+ login_type?: string;
5
+ sso_type?: string;
6
+ }): void;
3
7
  declare function XyAuthLayout(props: any): import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xydata-tools",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "xydata tools",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",