@fctc/interface-logic 1.2.0 → 1.2.2
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.
- package/dist/config.js +34 -6
- package/dist/config.mjs +34 -6
- package/dist/constants.d.mts +4 -1
- package/dist/constants.d.ts +4 -1
- package/dist/constants.js +3 -0
- package/dist/constants.mjs +3 -0
- package/dist/environment.d.mts +1 -0
- package/dist/environment.d.ts +1 -0
- package/dist/environment.js +36 -6
- package/dist/environment.mjs +36 -6
- package/dist/hook.d.mts +46 -2
- package/dist/hook.d.ts +46 -2
- package/dist/hook.js +449 -116
- package/dist/hook.mjs +400 -75
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +454 -119
- package/dist/index.mjs +400 -74
- package/dist/model.js +41 -8
- package/dist/model.mjs +41 -8
- package/dist/provider.d.mts +4 -3
- package/dist/provider.d.ts +4 -3
- package/dist/provider.js +158 -10
- package/dist/provider.mjs +158 -10
- package/dist/services.d.mts +36 -2
- package/dist/services.d.ts +36 -2
- package/dist/services.js +195 -12
- package/dist/services.mjs +195 -12
- package/dist/utils.d.mts +4 -1
- package/dist/utils.d.ts +4 -1
- package/dist/utils.js +21 -0
- package/dist/utils.mjs +20 -0
- package/package.json +87 -87
package/dist/model.js
CHANGED
|
@@ -60,6 +60,9 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
|
|
|
60
60
|
UriConstants2["CREATE_UPDATE_PATH"] = `/create_update`;
|
|
61
61
|
UriConstants2["TWOFA_METHOD_PATH"] = `/id/api/v2/call`;
|
|
62
62
|
UriConstants2["SIGNIN_SSO"] = `/signin-sso/oauth`;
|
|
63
|
+
UriConstants2["GRANT_ACCESS"] = "/grant-access";
|
|
64
|
+
UriConstants2["TOKEN_BY_CODE"] = "/token";
|
|
65
|
+
UriConstants2["LOGOUT"] = "/logout";
|
|
63
66
|
return UriConstants2;
|
|
64
67
|
})(UriConstants || {});
|
|
65
68
|
|
|
@@ -2296,6 +2299,25 @@ function matchDomain(record, domain) {
|
|
|
2296
2299
|
|
|
2297
2300
|
// src/utils/function.ts
|
|
2298
2301
|
var import_react = require("react");
|
|
2302
|
+
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
|
2303
|
+
if (!originalRequest.data) return originalRequest.data;
|
|
2304
|
+
if (typeof originalRequest.data === "string") {
|
|
2305
|
+
try {
|
|
2306
|
+
const parsedData = JSON.parse(originalRequest.data);
|
|
2307
|
+
if (parsedData.with_context && typeof parsedData.with_context === "object") {
|
|
2308
|
+
parsedData.with_context.token = newAccessToken;
|
|
2309
|
+
}
|
|
2310
|
+
return JSON.stringify(parsedData);
|
|
2311
|
+
} catch (e) {
|
|
2312
|
+
console.warn("Failed to parse originalRequest.data", e);
|
|
2313
|
+
return originalRequest.data;
|
|
2314
|
+
}
|
|
2315
|
+
}
|
|
2316
|
+
if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
|
|
2317
|
+
originalRequest.data.with_context.token = newAccessToken;
|
|
2318
|
+
}
|
|
2319
|
+
return originalRequest.data;
|
|
2320
|
+
};
|
|
2299
2321
|
|
|
2300
2322
|
// src/utils/storage/local-storage.ts
|
|
2301
2323
|
var localStorageUtils = () => {
|
|
@@ -2360,7 +2382,8 @@ var axiosClient = {
|
|
|
2360
2382
|
});
|
|
2361
2383
|
instance.interceptors.request.use(
|
|
2362
2384
|
async (config2) => {
|
|
2363
|
-
const
|
|
2385
|
+
const useRefreshToken = config2.useRefreshToken;
|
|
2386
|
+
const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
|
|
2364
2387
|
if (token) {
|
|
2365
2388
|
config2.headers["Authorization"] = "Bearer " + token;
|
|
2366
2389
|
}
|
|
@@ -2386,7 +2409,7 @@ var axiosClient = {
|
|
|
2386
2409
|
return data;
|
|
2387
2410
|
};
|
|
2388
2411
|
const originalRequest = error.config;
|
|
2389
|
-
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
|
|
2412
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
2390
2413
|
error.response.data.code
|
|
2391
2414
|
)) {
|
|
2392
2415
|
if (isRefreshing) {
|
|
@@ -2394,6 +2417,10 @@ var axiosClient = {
|
|
|
2394
2417
|
failedQueue.push({ resolve, reject });
|
|
2395
2418
|
}).then((token) => {
|
|
2396
2419
|
originalRequest.headers["Authorization"] = "Bearer " + token;
|
|
2420
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2421
|
+
originalRequest,
|
|
2422
|
+
token
|
|
2423
|
+
);
|
|
2397
2424
|
return instance.request(originalRequest);
|
|
2398
2425
|
}).catch(async (err) => {
|
|
2399
2426
|
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
@@ -2418,11 +2445,11 @@ var axiosClient = {
|
|
|
2418
2445
|
);
|
|
2419
2446
|
return new Promise(function(resolve) {
|
|
2420
2447
|
import_axios.default.post(
|
|
2421
|
-
`${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2448
|
+
`${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2422
2449
|
payload,
|
|
2423
2450
|
{
|
|
2424
2451
|
headers: {
|
|
2425
|
-
"Content-Type": "multipart/form-data",
|
|
2452
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2426
2453
|
Authorization: `Bearer ${accessTokenExp}`
|
|
2427
2454
|
}
|
|
2428
2455
|
}
|
|
@@ -2432,10 +2459,14 @@ var axiosClient = {
|
|
|
2432
2459
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
2433
2460
|
import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
2434
2461
|
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
2462
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2463
|
+
originalRequest,
|
|
2464
|
+
data.access_token
|
|
2465
|
+
);
|
|
2435
2466
|
processQueue(null, data.access_token);
|
|
2436
2467
|
resolve(instance.request(originalRequest));
|
|
2437
2468
|
}).catch(async (err) => {
|
|
2438
|
-
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
|
|
2469
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST") || err?.error_code === "ERR_2FA_006") {
|
|
2439
2470
|
await clearAuthToken();
|
|
2440
2471
|
}
|
|
2441
2472
|
if (err && err.response) {
|
|
@@ -2485,7 +2516,7 @@ var axiosClient = {
|
|
|
2485
2516
|
const responseBody = (response) => response;
|
|
2486
2517
|
const requests = {
|
|
2487
2518
|
get: (url, headers) => instance.get(formatUrl(url, db), headers).then(responseBody),
|
|
2488
|
-
post: (url, body, headers) => instance.post(formatUrl(url, db), body,
|
|
2519
|
+
post: (url, body, headers) => instance.post(formatUrl(url, db), body, headers).then(responseBody),
|
|
2489
2520
|
post_excel: (url, body, headers) => instance.post(formatUrl(url, db), body, {
|
|
2490
2521
|
responseType: "arraybuffer",
|
|
2491
2522
|
headers: {
|
|
@@ -3128,6 +3159,7 @@ var EnvStore = class {
|
|
|
3128
3159
|
db;
|
|
3129
3160
|
localStorageUtils;
|
|
3130
3161
|
sessionStorageUtils;
|
|
3162
|
+
refreshTokenEndpoint;
|
|
3131
3163
|
constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
|
|
3132
3164
|
this.envStore = envStore2;
|
|
3133
3165
|
this.localStorageUtils = localStorageUtils2;
|
|
@@ -3144,6 +3176,7 @@ var EnvStore = class {
|
|
|
3144
3176
|
this.companies = env2?.companies || [];
|
|
3145
3177
|
this.user = env2?.user;
|
|
3146
3178
|
this.db = env2?.db;
|
|
3179
|
+
this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
|
|
3147
3180
|
}
|
|
3148
3181
|
setupEnv(envConfig) {
|
|
3149
3182
|
const dispatch = this.envStore.dispatch;
|
|
@@ -3231,9 +3264,9 @@ var company_service_default = CompanyService;
|
|
|
3231
3264
|
|
|
3232
3265
|
// src/services/user-service/index.ts
|
|
3233
3266
|
var UserService = {
|
|
3234
|
-
async getProfile() {
|
|
3267
|
+
async getProfile(path) {
|
|
3235
3268
|
const env2 = getEnv();
|
|
3236
|
-
return env2.requests.get("/userinfo" /* PROFILE_PATH */, {
|
|
3269
|
+
return env2.requests.get(path ?? "/userinfo" /* PROFILE_PATH */, {
|
|
3237
3270
|
headers: {
|
|
3238
3271
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
3239
3272
|
}
|
package/dist/model.mjs
CHANGED
|
@@ -22,6 +22,9 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
|
|
|
22
22
|
UriConstants2["CREATE_UPDATE_PATH"] = `/create_update`;
|
|
23
23
|
UriConstants2["TWOFA_METHOD_PATH"] = `/id/api/v2/call`;
|
|
24
24
|
UriConstants2["SIGNIN_SSO"] = `/signin-sso/oauth`;
|
|
25
|
+
UriConstants2["GRANT_ACCESS"] = "/grant-access";
|
|
26
|
+
UriConstants2["TOKEN_BY_CODE"] = "/token";
|
|
27
|
+
UriConstants2["LOGOUT"] = "/logout";
|
|
25
28
|
return UriConstants2;
|
|
26
29
|
})(UriConstants || {});
|
|
27
30
|
|
|
@@ -2258,6 +2261,25 @@ function matchDomain(record, domain) {
|
|
|
2258
2261
|
|
|
2259
2262
|
// src/utils/function.ts
|
|
2260
2263
|
import { useEffect, useState } from "react";
|
|
2264
|
+
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
|
2265
|
+
if (!originalRequest.data) return originalRequest.data;
|
|
2266
|
+
if (typeof originalRequest.data === "string") {
|
|
2267
|
+
try {
|
|
2268
|
+
const parsedData = JSON.parse(originalRequest.data);
|
|
2269
|
+
if (parsedData.with_context && typeof parsedData.with_context === "object") {
|
|
2270
|
+
parsedData.with_context.token = newAccessToken;
|
|
2271
|
+
}
|
|
2272
|
+
return JSON.stringify(parsedData);
|
|
2273
|
+
} catch (e) {
|
|
2274
|
+
console.warn("Failed to parse originalRequest.data", e);
|
|
2275
|
+
return originalRequest.data;
|
|
2276
|
+
}
|
|
2277
|
+
}
|
|
2278
|
+
if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
|
|
2279
|
+
originalRequest.data.with_context.token = newAccessToken;
|
|
2280
|
+
}
|
|
2281
|
+
return originalRequest.data;
|
|
2282
|
+
};
|
|
2261
2283
|
|
|
2262
2284
|
// src/utils/storage/local-storage.ts
|
|
2263
2285
|
var localStorageUtils = () => {
|
|
@@ -2322,7 +2344,8 @@ var axiosClient = {
|
|
|
2322
2344
|
});
|
|
2323
2345
|
instance.interceptors.request.use(
|
|
2324
2346
|
async (config2) => {
|
|
2325
|
-
const
|
|
2347
|
+
const useRefreshToken = config2.useRefreshToken;
|
|
2348
|
+
const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
|
|
2326
2349
|
if (token) {
|
|
2327
2350
|
config2.headers["Authorization"] = "Bearer " + token;
|
|
2328
2351
|
}
|
|
@@ -2348,7 +2371,7 @@ var axiosClient = {
|
|
|
2348
2371
|
return data;
|
|
2349
2372
|
};
|
|
2350
2373
|
const originalRequest = error.config;
|
|
2351
|
-
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
|
|
2374
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
2352
2375
|
error.response.data.code
|
|
2353
2376
|
)) {
|
|
2354
2377
|
if (isRefreshing) {
|
|
@@ -2356,6 +2379,10 @@ var axiosClient = {
|
|
|
2356
2379
|
failedQueue.push({ resolve, reject });
|
|
2357
2380
|
}).then((token) => {
|
|
2358
2381
|
originalRequest.headers["Authorization"] = "Bearer " + token;
|
|
2382
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2383
|
+
originalRequest,
|
|
2384
|
+
token
|
|
2385
|
+
);
|
|
2359
2386
|
return instance.request(originalRequest);
|
|
2360
2387
|
}).catch(async (err) => {
|
|
2361
2388
|
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
@@ -2380,11 +2407,11 @@ var axiosClient = {
|
|
|
2380
2407
|
);
|
|
2381
2408
|
return new Promise(function(resolve) {
|
|
2382
2409
|
axios.post(
|
|
2383
|
-
`${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2410
|
+
`${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2384
2411
|
payload,
|
|
2385
2412
|
{
|
|
2386
2413
|
headers: {
|
|
2387
|
-
"Content-Type": "multipart/form-data",
|
|
2414
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2388
2415
|
Authorization: `Bearer ${accessTokenExp}`
|
|
2389
2416
|
}
|
|
2390
2417
|
}
|
|
@@ -2394,10 +2421,14 @@ var axiosClient = {
|
|
|
2394
2421
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
2395
2422
|
axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
2396
2423
|
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
2424
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2425
|
+
originalRequest,
|
|
2426
|
+
data.access_token
|
|
2427
|
+
);
|
|
2397
2428
|
processQueue(null, data.access_token);
|
|
2398
2429
|
resolve(instance.request(originalRequest));
|
|
2399
2430
|
}).catch(async (err) => {
|
|
2400
|
-
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
|
|
2431
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST") || err?.error_code === "ERR_2FA_006") {
|
|
2401
2432
|
await clearAuthToken();
|
|
2402
2433
|
}
|
|
2403
2434
|
if (err && err.response) {
|
|
@@ -2447,7 +2478,7 @@ var axiosClient = {
|
|
|
2447
2478
|
const responseBody = (response) => response;
|
|
2448
2479
|
const requests = {
|
|
2449
2480
|
get: (url, headers) => instance.get(formatUrl(url, db), headers).then(responseBody),
|
|
2450
|
-
post: (url, body, headers) => instance.post(formatUrl(url, db), body,
|
|
2481
|
+
post: (url, body, headers) => instance.post(formatUrl(url, db), body, headers).then(responseBody),
|
|
2451
2482
|
post_excel: (url, body, headers) => instance.post(formatUrl(url, db), body, {
|
|
2452
2483
|
responseType: "arraybuffer",
|
|
2453
2484
|
headers: {
|
|
@@ -3090,6 +3121,7 @@ var EnvStore = class {
|
|
|
3090
3121
|
db;
|
|
3091
3122
|
localStorageUtils;
|
|
3092
3123
|
sessionStorageUtils;
|
|
3124
|
+
refreshTokenEndpoint;
|
|
3093
3125
|
constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
|
|
3094
3126
|
this.envStore = envStore2;
|
|
3095
3127
|
this.localStorageUtils = localStorageUtils2;
|
|
@@ -3106,6 +3138,7 @@ var EnvStore = class {
|
|
|
3106
3138
|
this.companies = env2?.companies || [];
|
|
3107
3139
|
this.user = env2?.user;
|
|
3108
3140
|
this.db = env2?.db;
|
|
3141
|
+
this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
|
|
3109
3142
|
}
|
|
3110
3143
|
setupEnv(envConfig) {
|
|
3111
3144
|
const dispatch = this.envStore.dispatch;
|
|
@@ -3193,9 +3226,9 @@ var company_service_default = CompanyService;
|
|
|
3193
3226
|
|
|
3194
3227
|
// src/services/user-service/index.ts
|
|
3195
3228
|
var UserService = {
|
|
3196
|
-
async getProfile() {
|
|
3229
|
+
async getProfile(path) {
|
|
3197
3230
|
const env2 = getEnv();
|
|
3198
|
-
return env2.requests.get("/userinfo" /* PROFILE_PATH */, {
|
|
3231
|
+
return env2.requests.get(path ?? "/userinfo" /* PROFILE_PATH */, {
|
|
3199
3232
|
headers: {
|
|
3200
3233
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
3201
3234
|
}
|
package/dist/provider.d.mts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
1
2
|
import { ReactNode } from 'react';
|
|
2
3
|
|
|
3
4
|
declare const MainProvider: ({ children }: {
|
|
4
5
|
children: ReactNode;
|
|
5
|
-
}) => JSX.Element;
|
|
6
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
6
7
|
|
|
7
8
|
declare const ReactQueryProvider: ({ children }: {
|
|
8
9
|
children: ReactNode;
|
|
9
|
-
}) => JSX.Element;
|
|
10
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
10
11
|
|
|
11
12
|
declare const VersionGate: ({ children }: {
|
|
12
13
|
children: ReactNode;
|
|
13
|
-
}) => JSX.Element | null;
|
|
14
|
+
}) => react_jsx_runtime.JSX.Element | null;
|
|
14
15
|
|
|
15
16
|
export { MainProvider, ReactQueryProvider, VersionGate };
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
1
2
|
import { ReactNode } from 'react';
|
|
2
3
|
|
|
3
4
|
declare const MainProvider: ({ children }: {
|
|
4
5
|
children: ReactNode;
|
|
5
|
-
}) => JSX.Element;
|
|
6
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
6
7
|
|
|
7
8
|
declare const ReactQueryProvider: ({ children }: {
|
|
8
9
|
children: ReactNode;
|
|
9
|
-
}) => JSX.Element;
|
|
10
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
10
11
|
|
|
11
12
|
declare const VersionGate: ({ children }: {
|
|
12
13
|
children: ReactNode;
|
|
13
|
-
}) => JSX.Element | null;
|
|
14
|
+
}) => react_jsx_runtime.JSX.Element | null;
|
|
14
15
|
|
|
15
16
|
export { MainProvider, ReactQueryProvider, VersionGate };
|
package/dist/provider.js
CHANGED
|
@@ -2801,6 +2801,25 @@ function matchDomain(record, domain) {
|
|
|
2801
2801
|
|
|
2802
2802
|
// src/utils/function.ts
|
|
2803
2803
|
var import_react = require("react");
|
|
2804
|
+
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
|
2805
|
+
if (!originalRequest.data) return originalRequest.data;
|
|
2806
|
+
if (typeof originalRequest.data === "string") {
|
|
2807
|
+
try {
|
|
2808
|
+
const parsedData = JSON.parse(originalRequest.data);
|
|
2809
|
+
if (parsedData.with_context && typeof parsedData.with_context === "object") {
|
|
2810
|
+
parsedData.with_context.token = newAccessToken;
|
|
2811
|
+
}
|
|
2812
|
+
return JSON.stringify(parsedData);
|
|
2813
|
+
} catch (e) {
|
|
2814
|
+
console.warn("Failed to parse originalRequest.data", e);
|
|
2815
|
+
return originalRequest.data;
|
|
2816
|
+
}
|
|
2817
|
+
}
|
|
2818
|
+
if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
|
|
2819
|
+
originalRequest.data.with_context.token = newAccessToken;
|
|
2820
|
+
}
|
|
2821
|
+
return originalRequest.data;
|
|
2822
|
+
};
|
|
2804
2823
|
|
|
2805
2824
|
// src/utils/storage/local-storage.ts
|
|
2806
2825
|
var localStorageUtils = () => {
|
|
@@ -2865,7 +2884,8 @@ var axiosClient = {
|
|
|
2865
2884
|
});
|
|
2866
2885
|
instance.interceptors.request.use(
|
|
2867
2886
|
async (config2) => {
|
|
2868
|
-
const
|
|
2887
|
+
const useRefreshToken = config2.useRefreshToken;
|
|
2888
|
+
const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
|
|
2869
2889
|
if (token) {
|
|
2870
2890
|
config2.headers["Authorization"] = "Bearer " + token;
|
|
2871
2891
|
}
|
|
@@ -2891,7 +2911,7 @@ var axiosClient = {
|
|
|
2891
2911
|
return data;
|
|
2892
2912
|
};
|
|
2893
2913
|
const originalRequest = error.config;
|
|
2894
|
-
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
|
|
2914
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
2895
2915
|
error.response.data.code
|
|
2896
2916
|
)) {
|
|
2897
2917
|
if (isRefreshing) {
|
|
@@ -2899,6 +2919,10 @@ var axiosClient = {
|
|
|
2899
2919
|
failedQueue.push({ resolve, reject });
|
|
2900
2920
|
}).then((token) => {
|
|
2901
2921
|
originalRequest.headers["Authorization"] = "Bearer " + token;
|
|
2922
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2923
|
+
originalRequest,
|
|
2924
|
+
token
|
|
2925
|
+
);
|
|
2902
2926
|
return instance.request(originalRequest);
|
|
2903
2927
|
}).catch(async (err) => {
|
|
2904
2928
|
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
@@ -2923,11 +2947,11 @@ var axiosClient = {
|
|
|
2923
2947
|
);
|
|
2924
2948
|
return new Promise(function(resolve) {
|
|
2925
2949
|
import_axios.default.post(
|
|
2926
|
-
`${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2950
|
+
`${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2927
2951
|
payload,
|
|
2928
2952
|
{
|
|
2929
2953
|
headers: {
|
|
2930
|
-
"Content-Type": "multipart/form-data",
|
|
2954
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2931
2955
|
Authorization: `Bearer ${accessTokenExp}`
|
|
2932
2956
|
}
|
|
2933
2957
|
}
|
|
@@ -2937,10 +2961,14 @@ var axiosClient = {
|
|
|
2937
2961
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
2938
2962
|
import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
2939
2963
|
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
2964
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2965
|
+
originalRequest,
|
|
2966
|
+
data.access_token
|
|
2967
|
+
);
|
|
2940
2968
|
processQueue(null, data.access_token);
|
|
2941
2969
|
resolve(instance.request(originalRequest));
|
|
2942
2970
|
}).catch(async (err) => {
|
|
2943
|
-
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
|
|
2971
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST") || err?.error_code === "ERR_2FA_006") {
|
|
2944
2972
|
await clearAuthToken();
|
|
2945
2973
|
}
|
|
2946
2974
|
if (err && err.response) {
|
|
@@ -2990,7 +3018,7 @@ var axiosClient = {
|
|
|
2990
3018
|
const responseBody = (response) => response;
|
|
2991
3019
|
const requests = {
|
|
2992
3020
|
get: (url, headers) => instance.get(formatUrl(url, db), headers).then(responseBody),
|
|
2993
|
-
post: (url, body, headers) => instance.post(formatUrl(url, db), body,
|
|
3021
|
+
post: (url, body, headers) => instance.post(formatUrl(url, db), body, headers).then(responseBody),
|
|
2994
3022
|
post_excel: (url, body, headers) => instance.post(formatUrl(url, db), body, {
|
|
2995
3023
|
responseType: "arraybuffer",
|
|
2996
3024
|
headers: {
|
|
@@ -3019,6 +3047,7 @@ var EnvStore = class {
|
|
|
3019
3047
|
db;
|
|
3020
3048
|
localStorageUtils;
|
|
3021
3049
|
sessionStorageUtils;
|
|
3050
|
+
refreshTokenEndpoint;
|
|
3022
3051
|
constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
|
|
3023
3052
|
this.envStore = envStore2;
|
|
3024
3053
|
this.localStorageUtils = localStorageUtils2;
|
|
@@ -3035,6 +3064,7 @@ var EnvStore = class {
|
|
|
3035
3064
|
this.companies = env2?.companies || [];
|
|
3036
3065
|
this.user = env2?.user;
|
|
3037
3066
|
this.db = env2?.db;
|
|
3067
|
+
this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
|
|
3038
3068
|
}
|
|
3039
3069
|
setupEnv(envConfig) {
|
|
3040
3070
|
const dispatch = this.envStore.dispatch;
|
|
@@ -3370,14 +3400,18 @@ var ViewService = {
|
|
|
3370
3400
|
async verify2FA({
|
|
3371
3401
|
method,
|
|
3372
3402
|
with_context,
|
|
3373
|
-
code
|
|
3403
|
+
code,
|
|
3404
|
+
device,
|
|
3405
|
+
location
|
|
3374
3406
|
}) {
|
|
3375
3407
|
const env2 = getEnv();
|
|
3376
3408
|
const jsonData = {
|
|
3377
3409
|
method,
|
|
3378
3410
|
kwargs: {
|
|
3379
3411
|
vals: {
|
|
3380
|
-
code
|
|
3412
|
+
code,
|
|
3413
|
+
device,
|
|
3414
|
+
location
|
|
3381
3415
|
}
|
|
3382
3416
|
},
|
|
3383
3417
|
with_context
|
|
@@ -3385,7 +3419,8 @@ var ViewService = {
|
|
|
3385
3419
|
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
|
3386
3420
|
headers: {
|
|
3387
3421
|
"Content-Type": "application/json"
|
|
3388
|
-
}
|
|
3422
|
+
},
|
|
3423
|
+
withCredentials: true
|
|
3389
3424
|
});
|
|
3390
3425
|
},
|
|
3391
3426
|
async signInSSO({
|
|
@@ -3404,7 +3439,120 @@ var ViewService = {
|
|
|
3404
3439
|
});
|
|
3405
3440
|
const url = `${path}?${params.toString()}`;
|
|
3406
3441
|
return env2?.requests.get(url, {
|
|
3407
|
-
|
|
3442
|
+
headers: {
|
|
3443
|
+
"Content-Type": "application/json"
|
|
3444
|
+
},
|
|
3445
|
+
withCredentials: true
|
|
3446
|
+
});
|
|
3447
|
+
},
|
|
3448
|
+
async grantAccess({
|
|
3449
|
+
redirect_uri,
|
|
3450
|
+
state,
|
|
3451
|
+
client_id,
|
|
3452
|
+
scopes
|
|
3453
|
+
}) {
|
|
3454
|
+
const env2 = getEnv();
|
|
3455
|
+
const jsonData = {
|
|
3456
|
+
redirect_uri,
|
|
3457
|
+
state,
|
|
3458
|
+
client_id,
|
|
3459
|
+
scopes
|
|
3460
|
+
};
|
|
3461
|
+
return env2?.requests.post("/grant-access" /* GRANT_ACCESS */, jsonData, {
|
|
3462
|
+
headers: {
|
|
3463
|
+
"Content-Type": "application/json"
|
|
3464
|
+
},
|
|
3465
|
+
withCredentials: true
|
|
3466
|
+
});
|
|
3467
|
+
},
|
|
3468
|
+
async getFieldsViewSecurity({
|
|
3469
|
+
method,
|
|
3470
|
+
token,
|
|
3471
|
+
views
|
|
3472
|
+
}) {
|
|
3473
|
+
const env2 = getEnv();
|
|
3474
|
+
const jsonData = {
|
|
3475
|
+
method,
|
|
3476
|
+
kwargs: {
|
|
3477
|
+
views
|
|
3478
|
+
},
|
|
3479
|
+
with_context: {
|
|
3480
|
+
token
|
|
3481
|
+
}
|
|
3482
|
+
};
|
|
3483
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
|
3484
|
+
headers: {
|
|
3485
|
+
"Content-Type": "application/json"
|
|
3486
|
+
}
|
|
3487
|
+
});
|
|
3488
|
+
},
|
|
3489
|
+
async settingsWebRead2fa({
|
|
3490
|
+
method,
|
|
3491
|
+
model,
|
|
3492
|
+
kwargs,
|
|
3493
|
+
token
|
|
3494
|
+
}) {
|
|
3495
|
+
const env2 = getEnv();
|
|
3496
|
+
const jsonData = {
|
|
3497
|
+
method,
|
|
3498
|
+
model,
|
|
3499
|
+
kwargs,
|
|
3500
|
+
with_context: {
|
|
3501
|
+
token
|
|
3502
|
+
}
|
|
3503
|
+
};
|
|
3504
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
|
3505
|
+
headers: {
|
|
3506
|
+
"Content-Type": "application/json"
|
|
3507
|
+
}
|
|
3508
|
+
});
|
|
3509
|
+
},
|
|
3510
|
+
async requestSetupTotp({ method, token }) {
|
|
3511
|
+
const env2 = getEnv();
|
|
3512
|
+
const jsonData = {
|
|
3513
|
+
method,
|
|
3514
|
+
with_context: {
|
|
3515
|
+
token
|
|
3516
|
+
}
|
|
3517
|
+
};
|
|
3518
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
|
3519
|
+
headers: {
|
|
3520
|
+
"Content-Type": "application/json"
|
|
3521
|
+
}
|
|
3522
|
+
});
|
|
3523
|
+
},
|
|
3524
|
+
async verifyTotp({
|
|
3525
|
+
method,
|
|
3526
|
+
action_token,
|
|
3527
|
+
code
|
|
3528
|
+
}) {
|
|
3529
|
+
const env2 = getEnv();
|
|
3530
|
+
const jsonData = {
|
|
3531
|
+
method,
|
|
3532
|
+
kwargs: {
|
|
3533
|
+
vals: {
|
|
3534
|
+
code
|
|
3535
|
+
}
|
|
3536
|
+
},
|
|
3537
|
+
with_context: {
|
|
3538
|
+
action_token
|
|
3539
|
+
}
|
|
3540
|
+
};
|
|
3541
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
|
3542
|
+
headers: {
|
|
3543
|
+
"Content-Type": "application/json"
|
|
3544
|
+
}
|
|
3545
|
+
});
|
|
3546
|
+
},
|
|
3547
|
+
async removeTotpSetUp({ method, token }) {
|
|
3548
|
+
const env2 = getEnv();
|
|
3549
|
+
const jsonData = {
|
|
3550
|
+
method,
|
|
3551
|
+
with_context: {
|
|
3552
|
+
token
|
|
3553
|
+
}
|
|
3554
|
+
};
|
|
3555
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
|
3408
3556
|
headers: {
|
|
3409
3557
|
"Content-Type": "application/json"
|
|
3410
3558
|
}
|