@fctc/interface-logic 3.8.8 → 3.8.10
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/configs.js +127 -16
- package/dist/configs.mjs +127 -16
- package/dist/environment.js +127 -16
- package/dist/environment.mjs +127 -16
- package/dist/provider.js +127 -16
- package/dist/provider.mjs +127 -16
- package/package.json +1 -1
package/dist/configs.js
CHANGED
|
@@ -2276,10 +2276,10 @@ var axiosClient = {
|
|
|
2276
2276
|
timeout: 5e4,
|
|
2277
2277
|
paramsSerializer: (params) => new URLSearchParams(params).toString()
|
|
2278
2278
|
});
|
|
2279
|
-
instance.interceptors.request.use(async (
|
|
2280
|
-
const useRefreshToken =
|
|
2281
|
-
const useActionToken =
|
|
2282
|
-
const actionToken =
|
|
2279
|
+
instance.interceptors.request.use(async (configReq) => {
|
|
2280
|
+
const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
|
|
2281
|
+
const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
|
|
2282
|
+
const actionToken = configReq.headers["X-Action-Token"];
|
|
2283
2283
|
let token = null;
|
|
2284
2284
|
if (useActionToken && actionToken) {
|
|
2285
2285
|
token = actionToken;
|
|
@@ -2288,20 +2288,115 @@ var axiosClient = {
|
|
|
2288
2288
|
token = await getToken?.();
|
|
2289
2289
|
}
|
|
2290
2290
|
if (token) {
|
|
2291
|
-
|
|
2291
|
+
configReq.headers["Authorization"] = `Bearer ${token}`;
|
|
2292
2292
|
}
|
|
2293
2293
|
if (database) {
|
|
2294
|
-
|
|
2294
|
+
configReq.headers["DATABASE"] = database;
|
|
2295
2295
|
}
|
|
2296
|
-
|
|
2297
|
-
return config2;
|
|
2296
|
+
return configReq;
|
|
2298
2297
|
}, Promise.reject);
|
|
2298
|
+
const buildRefreshUrl = () => {
|
|
2299
|
+
if (!config.refreshTokenEndpoint) {
|
|
2300
|
+
return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
|
|
2301
|
+
}
|
|
2302
|
+
const ep = String(config.refreshTokenEndpoint);
|
|
2303
|
+
if (/^https?:\/\//i.test(ep)) return ep;
|
|
2304
|
+
const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
|
|
2305
|
+
const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
|
|
2306
|
+
return `${cleanBase}${cleanEp}`;
|
|
2307
|
+
};
|
|
2308
|
+
instance.interceptors.response.use(
|
|
2309
|
+
(response) => handleResponse(response),
|
|
2310
|
+
async (error) => {
|
|
2311
|
+
const handleError3 = async (err) => {
|
|
2312
|
+
if (!err.response) return err;
|
|
2313
|
+
const { data } = err.response;
|
|
2314
|
+
if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
|
|
2315
|
+
await clearAuthToken();
|
|
2316
|
+
}
|
|
2317
|
+
return data;
|
|
2318
|
+
};
|
|
2319
|
+
const originalRequest = error.config;
|
|
2320
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
2321
|
+
error.response.data.code
|
|
2322
|
+
)) {
|
|
2323
|
+
if (isRefreshing) {
|
|
2324
|
+
return new Promise(function(resolve, reject) {
|
|
2325
|
+
failedQueue.push({ resolve, reject });
|
|
2326
|
+
}).then((newToken) => {
|
|
2327
|
+
originalRequest.headers["Authorization"] = "Bearer " + newToken;
|
|
2328
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2329
|
+
originalRequest,
|
|
2330
|
+
newToken
|
|
2331
|
+
);
|
|
2332
|
+
return instance.request(originalRequest);
|
|
2333
|
+
}).catch(async (err) => {
|
|
2334
|
+
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
2335
|
+
await clearAuthToken();
|
|
2336
|
+
}
|
|
2337
|
+
});
|
|
2338
|
+
}
|
|
2339
|
+
const browserSession = await sessionStorage2.getBrowserSession();
|
|
2340
|
+
const refreshToken = await localStorage2.getRefreshToken();
|
|
2341
|
+
const accessTokenExp = await localStorage2.getAccessToken();
|
|
2342
|
+
isRefreshing = true;
|
|
2343
|
+
if (!refreshToken && (!browserSession || browserSession == "unActive")) {
|
|
2344
|
+
await clearAuthToken();
|
|
2345
|
+
} else {
|
|
2346
|
+
const payload = Object.fromEntries(
|
|
2347
|
+
Object.entries({
|
|
2348
|
+
refresh_token: refreshToken,
|
|
2349
|
+
grant_type: "refresh_token",
|
|
2350
|
+
client_id: config.config.clientId,
|
|
2351
|
+
client_secret: config.config.clientSecret
|
|
2352
|
+
}).filter(([_, v]) => !!v)
|
|
2353
|
+
);
|
|
2354
|
+
const refreshUrl = buildRefreshUrl();
|
|
2355
|
+
return new Promise(function(resolve) {
|
|
2356
|
+
import_axios.default.post(refreshUrl, payload, {
|
|
2357
|
+
headers: {
|
|
2358
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2359
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2360
|
+
}
|
|
2361
|
+
}).then(async (res) => {
|
|
2362
|
+
const data = res.data;
|
|
2363
|
+
await localStorage2.setToken(data.access_token);
|
|
2364
|
+
await localStorage2.setRefreshToken(data.refresh_token);
|
|
2365
|
+
import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
2366
|
+
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
2367
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2368
|
+
originalRequest,
|
|
2369
|
+
data.access_token
|
|
2370
|
+
);
|
|
2371
|
+
processQueue(null, data.access_token);
|
|
2372
|
+
resolve(instance.request(originalRequest));
|
|
2373
|
+
}).catch(async (err) => {
|
|
2374
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
|
|
2375
|
+
await clearAuthToken();
|
|
2376
|
+
}
|
|
2377
|
+
if (err && err.response) {
|
|
2378
|
+
const { error_code } = err.response?.data || {};
|
|
2379
|
+
const { code } = err;
|
|
2380
|
+
if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
|
|
2381
|
+
await clearAuthToken();
|
|
2382
|
+
}
|
|
2383
|
+
}
|
|
2384
|
+
processQueue(err, null);
|
|
2385
|
+
}).finally(() => {
|
|
2386
|
+
isRefreshing = false;
|
|
2387
|
+
});
|
|
2388
|
+
});
|
|
2389
|
+
}
|
|
2390
|
+
}
|
|
2391
|
+
return Promise.reject(await handleError3(error));
|
|
2392
|
+
}
|
|
2393
|
+
);
|
|
2299
2394
|
instance.interceptors.response.use(
|
|
2300
2395
|
(response) => {
|
|
2301
2396
|
return handleResponse(response);
|
|
2302
2397
|
},
|
|
2303
2398
|
async (error) => {
|
|
2304
|
-
const
|
|
2399
|
+
const handleError3 = async (error2) => {
|
|
2305
2400
|
if (!error2.response) {
|
|
2306
2401
|
return error2;
|
|
2307
2402
|
}
|
|
@@ -2347,13 +2442,16 @@ var axiosClient = {
|
|
|
2347
2442
|
}).filter(([_, value]) => !!value)
|
|
2348
2443
|
);
|
|
2349
2444
|
return new Promise(function(resolve) {
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2445
|
+
import_axios.default.post(
|
|
2446
|
+
`${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2447
|
+
payload,
|
|
2448
|
+
{
|
|
2449
|
+
headers: {
|
|
2450
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2451
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2452
|
+
}
|
|
2355
2453
|
}
|
|
2356
|
-
|
|
2454
|
+
).then(async (res) => {
|
|
2357
2455
|
const data = res.data;
|
|
2358
2456
|
await localStorage2.setToken(data.access_token);
|
|
2359
2457
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
@@ -2386,7 +2484,7 @@ var axiosClient = {
|
|
|
2386
2484
|
});
|
|
2387
2485
|
}
|
|
2388
2486
|
}
|
|
2389
|
-
return Promise.reject(await
|
|
2487
|
+
return Promise.reject(await handleError3(error));
|
|
2390
2488
|
}
|
|
2391
2489
|
);
|
|
2392
2490
|
const handleResponse = (res) => {
|
|
@@ -2395,6 +2493,19 @@ var axiosClient = {
|
|
|
2395
2493
|
}
|
|
2396
2494
|
return res;
|
|
2397
2495
|
};
|
|
2496
|
+
const handleError2 = (error) => {
|
|
2497
|
+
if (error.isAxiosError && error.code === "ECONNABORTED") {
|
|
2498
|
+
console.error("Request Timeout Error:", error);
|
|
2499
|
+
return "Request Timeout Error";
|
|
2500
|
+
} else if (error.isAxiosError && !error.response) {
|
|
2501
|
+
console.error("Network Error:", error);
|
|
2502
|
+
return "Network Error";
|
|
2503
|
+
} else {
|
|
2504
|
+
console.error("Other Error:", error?.response);
|
|
2505
|
+
const errorMessage = error?.response?.data?.message || "An error occurred";
|
|
2506
|
+
return { message: errorMessage, status: error?.response?.status };
|
|
2507
|
+
}
|
|
2508
|
+
};
|
|
2398
2509
|
const clearAuthToken = async () => {
|
|
2399
2510
|
await localStorage2.clearToken();
|
|
2400
2511
|
if (typeof window !== "undefined") {
|
package/dist/configs.mjs
CHANGED
|
@@ -2240,10 +2240,10 @@ var axiosClient = {
|
|
|
2240
2240
|
timeout: 5e4,
|
|
2241
2241
|
paramsSerializer: (params) => new URLSearchParams(params).toString()
|
|
2242
2242
|
});
|
|
2243
|
-
instance.interceptors.request.use(async (
|
|
2244
|
-
const useRefreshToken =
|
|
2245
|
-
const useActionToken =
|
|
2246
|
-
const actionToken =
|
|
2243
|
+
instance.interceptors.request.use(async (configReq) => {
|
|
2244
|
+
const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
|
|
2245
|
+
const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
|
|
2246
|
+
const actionToken = configReq.headers["X-Action-Token"];
|
|
2247
2247
|
let token = null;
|
|
2248
2248
|
if (useActionToken && actionToken) {
|
|
2249
2249
|
token = actionToken;
|
|
@@ -2252,20 +2252,115 @@ var axiosClient = {
|
|
|
2252
2252
|
token = await getToken?.();
|
|
2253
2253
|
}
|
|
2254
2254
|
if (token) {
|
|
2255
|
-
|
|
2255
|
+
configReq.headers["Authorization"] = `Bearer ${token}`;
|
|
2256
2256
|
}
|
|
2257
2257
|
if (database) {
|
|
2258
|
-
|
|
2258
|
+
configReq.headers["DATABASE"] = database;
|
|
2259
2259
|
}
|
|
2260
|
-
|
|
2261
|
-
return config2;
|
|
2260
|
+
return configReq;
|
|
2262
2261
|
}, Promise.reject);
|
|
2262
|
+
const buildRefreshUrl = () => {
|
|
2263
|
+
if (!config.refreshTokenEndpoint) {
|
|
2264
|
+
return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
|
|
2265
|
+
}
|
|
2266
|
+
const ep = String(config.refreshTokenEndpoint);
|
|
2267
|
+
if (/^https?:\/\//i.test(ep)) return ep;
|
|
2268
|
+
const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
|
|
2269
|
+
const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
|
|
2270
|
+
return `${cleanBase}${cleanEp}`;
|
|
2271
|
+
};
|
|
2272
|
+
instance.interceptors.response.use(
|
|
2273
|
+
(response) => handleResponse(response),
|
|
2274
|
+
async (error) => {
|
|
2275
|
+
const handleError3 = async (err) => {
|
|
2276
|
+
if (!err.response) return err;
|
|
2277
|
+
const { data } = err.response;
|
|
2278
|
+
if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
|
|
2279
|
+
await clearAuthToken();
|
|
2280
|
+
}
|
|
2281
|
+
return data;
|
|
2282
|
+
};
|
|
2283
|
+
const originalRequest = error.config;
|
|
2284
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
2285
|
+
error.response.data.code
|
|
2286
|
+
)) {
|
|
2287
|
+
if (isRefreshing) {
|
|
2288
|
+
return new Promise(function(resolve, reject) {
|
|
2289
|
+
failedQueue.push({ resolve, reject });
|
|
2290
|
+
}).then((newToken) => {
|
|
2291
|
+
originalRequest.headers["Authorization"] = "Bearer " + newToken;
|
|
2292
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2293
|
+
originalRequest,
|
|
2294
|
+
newToken
|
|
2295
|
+
);
|
|
2296
|
+
return instance.request(originalRequest);
|
|
2297
|
+
}).catch(async (err) => {
|
|
2298
|
+
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
2299
|
+
await clearAuthToken();
|
|
2300
|
+
}
|
|
2301
|
+
});
|
|
2302
|
+
}
|
|
2303
|
+
const browserSession = await sessionStorage2.getBrowserSession();
|
|
2304
|
+
const refreshToken = await localStorage2.getRefreshToken();
|
|
2305
|
+
const accessTokenExp = await localStorage2.getAccessToken();
|
|
2306
|
+
isRefreshing = true;
|
|
2307
|
+
if (!refreshToken && (!browserSession || browserSession == "unActive")) {
|
|
2308
|
+
await clearAuthToken();
|
|
2309
|
+
} else {
|
|
2310
|
+
const payload = Object.fromEntries(
|
|
2311
|
+
Object.entries({
|
|
2312
|
+
refresh_token: refreshToken,
|
|
2313
|
+
grant_type: "refresh_token",
|
|
2314
|
+
client_id: config.config.clientId,
|
|
2315
|
+
client_secret: config.config.clientSecret
|
|
2316
|
+
}).filter(([_, v]) => !!v)
|
|
2317
|
+
);
|
|
2318
|
+
const refreshUrl = buildRefreshUrl();
|
|
2319
|
+
return new Promise(function(resolve) {
|
|
2320
|
+
axios.post(refreshUrl, payload, {
|
|
2321
|
+
headers: {
|
|
2322
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2323
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2324
|
+
}
|
|
2325
|
+
}).then(async (res) => {
|
|
2326
|
+
const data = res.data;
|
|
2327
|
+
await localStorage2.setToken(data.access_token);
|
|
2328
|
+
await localStorage2.setRefreshToken(data.refresh_token);
|
|
2329
|
+
axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
2330
|
+
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
2331
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2332
|
+
originalRequest,
|
|
2333
|
+
data.access_token
|
|
2334
|
+
);
|
|
2335
|
+
processQueue(null, data.access_token);
|
|
2336
|
+
resolve(instance.request(originalRequest));
|
|
2337
|
+
}).catch(async (err) => {
|
|
2338
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
|
|
2339
|
+
await clearAuthToken();
|
|
2340
|
+
}
|
|
2341
|
+
if (err && err.response) {
|
|
2342
|
+
const { error_code } = err.response?.data || {};
|
|
2343
|
+
const { code } = err;
|
|
2344
|
+
if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
|
|
2345
|
+
await clearAuthToken();
|
|
2346
|
+
}
|
|
2347
|
+
}
|
|
2348
|
+
processQueue(err, null);
|
|
2349
|
+
}).finally(() => {
|
|
2350
|
+
isRefreshing = false;
|
|
2351
|
+
});
|
|
2352
|
+
});
|
|
2353
|
+
}
|
|
2354
|
+
}
|
|
2355
|
+
return Promise.reject(await handleError3(error));
|
|
2356
|
+
}
|
|
2357
|
+
);
|
|
2263
2358
|
instance.interceptors.response.use(
|
|
2264
2359
|
(response) => {
|
|
2265
2360
|
return handleResponse(response);
|
|
2266
2361
|
},
|
|
2267
2362
|
async (error) => {
|
|
2268
|
-
const
|
|
2363
|
+
const handleError3 = async (error2) => {
|
|
2269
2364
|
if (!error2.response) {
|
|
2270
2365
|
return error2;
|
|
2271
2366
|
}
|
|
@@ -2311,13 +2406,16 @@ var axiosClient = {
|
|
|
2311
2406
|
}).filter(([_, value]) => !!value)
|
|
2312
2407
|
);
|
|
2313
2408
|
return new Promise(function(resolve) {
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2409
|
+
axios.post(
|
|
2410
|
+
`${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2411
|
+
payload,
|
|
2412
|
+
{
|
|
2413
|
+
headers: {
|
|
2414
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2415
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2416
|
+
}
|
|
2319
2417
|
}
|
|
2320
|
-
|
|
2418
|
+
).then(async (res) => {
|
|
2321
2419
|
const data = res.data;
|
|
2322
2420
|
await localStorage2.setToken(data.access_token);
|
|
2323
2421
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
@@ -2350,7 +2448,7 @@ var axiosClient = {
|
|
|
2350
2448
|
});
|
|
2351
2449
|
}
|
|
2352
2450
|
}
|
|
2353
|
-
return Promise.reject(await
|
|
2451
|
+
return Promise.reject(await handleError3(error));
|
|
2354
2452
|
}
|
|
2355
2453
|
);
|
|
2356
2454
|
const handleResponse = (res) => {
|
|
@@ -2359,6 +2457,19 @@ var axiosClient = {
|
|
|
2359
2457
|
}
|
|
2360
2458
|
return res;
|
|
2361
2459
|
};
|
|
2460
|
+
const handleError2 = (error) => {
|
|
2461
|
+
if (error.isAxiosError && error.code === "ECONNABORTED") {
|
|
2462
|
+
console.error("Request Timeout Error:", error);
|
|
2463
|
+
return "Request Timeout Error";
|
|
2464
|
+
} else if (error.isAxiosError && !error.response) {
|
|
2465
|
+
console.error("Network Error:", error);
|
|
2466
|
+
return "Network Error";
|
|
2467
|
+
} else {
|
|
2468
|
+
console.error("Other Error:", error?.response);
|
|
2469
|
+
const errorMessage = error?.response?.data?.message || "An error occurred";
|
|
2470
|
+
return { message: errorMessage, status: error?.response?.status };
|
|
2471
|
+
}
|
|
2472
|
+
};
|
|
2362
2473
|
const clearAuthToken = async () => {
|
|
2363
2474
|
await localStorage2.clearToken();
|
|
2364
2475
|
if (typeof window !== "undefined") {
|
package/dist/environment.js
CHANGED
|
@@ -2278,10 +2278,10 @@ var axiosClient = {
|
|
|
2278
2278
|
timeout: 5e4,
|
|
2279
2279
|
paramsSerializer: (params) => new URLSearchParams(params).toString()
|
|
2280
2280
|
});
|
|
2281
|
-
instance.interceptors.request.use(async (
|
|
2282
|
-
const useRefreshToken =
|
|
2283
|
-
const useActionToken =
|
|
2284
|
-
const actionToken =
|
|
2281
|
+
instance.interceptors.request.use(async (configReq) => {
|
|
2282
|
+
const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
|
|
2283
|
+
const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
|
|
2284
|
+
const actionToken = configReq.headers["X-Action-Token"];
|
|
2285
2285
|
let token = null;
|
|
2286
2286
|
if (useActionToken && actionToken) {
|
|
2287
2287
|
token = actionToken;
|
|
@@ -2290,20 +2290,115 @@ var axiosClient = {
|
|
|
2290
2290
|
token = await getToken?.();
|
|
2291
2291
|
}
|
|
2292
2292
|
if (token) {
|
|
2293
|
-
|
|
2293
|
+
configReq.headers["Authorization"] = `Bearer ${token}`;
|
|
2294
2294
|
}
|
|
2295
2295
|
if (database) {
|
|
2296
|
-
|
|
2296
|
+
configReq.headers["DATABASE"] = database;
|
|
2297
2297
|
}
|
|
2298
|
-
|
|
2299
|
-
return config2;
|
|
2298
|
+
return configReq;
|
|
2300
2299
|
}, Promise.reject);
|
|
2300
|
+
const buildRefreshUrl = () => {
|
|
2301
|
+
if (!config.refreshTokenEndpoint) {
|
|
2302
|
+
return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
|
|
2303
|
+
}
|
|
2304
|
+
const ep = String(config.refreshTokenEndpoint);
|
|
2305
|
+
if (/^https?:\/\//i.test(ep)) return ep;
|
|
2306
|
+
const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
|
|
2307
|
+
const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
|
|
2308
|
+
return `${cleanBase}${cleanEp}`;
|
|
2309
|
+
};
|
|
2310
|
+
instance.interceptors.response.use(
|
|
2311
|
+
(response) => handleResponse(response),
|
|
2312
|
+
async (error) => {
|
|
2313
|
+
const handleError3 = async (err) => {
|
|
2314
|
+
if (!err.response) return err;
|
|
2315
|
+
const { data } = err.response;
|
|
2316
|
+
if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
|
|
2317
|
+
await clearAuthToken();
|
|
2318
|
+
}
|
|
2319
|
+
return data;
|
|
2320
|
+
};
|
|
2321
|
+
const originalRequest = error.config;
|
|
2322
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
2323
|
+
error.response.data.code
|
|
2324
|
+
)) {
|
|
2325
|
+
if (isRefreshing) {
|
|
2326
|
+
return new Promise(function(resolve, reject) {
|
|
2327
|
+
failedQueue.push({ resolve, reject });
|
|
2328
|
+
}).then((newToken) => {
|
|
2329
|
+
originalRequest.headers["Authorization"] = "Bearer " + newToken;
|
|
2330
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2331
|
+
originalRequest,
|
|
2332
|
+
newToken
|
|
2333
|
+
);
|
|
2334
|
+
return instance.request(originalRequest);
|
|
2335
|
+
}).catch(async (err) => {
|
|
2336
|
+
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
2337
|
+
await clearAuthToken();
|
|
2338
|
+
}
|
|
2339
|
+
});
|
|
2340
|
+
}
|
|
2341
|
+
const browserSession = await sessionStorage2.getBrowserSession();
|
|
2342
|
+
const refreshToken = await localStorage2.getRefreshToken();
|
|
2343
|
+
const accessTokenExp = await localStorage2.getAccessToken();
|
|
2344
|
+
isRefreshing = true;
|
|
2345
|
+
if (!refreshToken && (!browserSession || browserSession == "unActive")) {
|
|
2346
|
+
await clearAuthToken();
|
|
2347
|
+
} else {
|
|
2348
|
+
const payload = Object.fromEntries(
|
|
2349
|
+
Object.entries({
|
|
2350
|
+
refresh_token: refreshToken,
|
|
2351
|
+
grant_type: "refresh_token",
|
|
2352
|
+
client_id: config.config.clientId,
|
|
2353
|
+
client_secret: config.config.clientSecret
|
|
2354
|
+
}).filter(([_, v]) => !!v)
|
|
2355
|
+
);
|
|
2356
|
+
const refreshUrl = buildRefreshUrl();
|
|
2357
|
+
return new Promise(function(resolve) {
|
|
2358
|
+
import_axios.default.post(refreshUrl, payload, {
|
|
2359
|
+
headers: {
|
|
2360
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2361
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2362
|
+
}
|
|
2363
|
+
}).then(async (res) => {
|
|
2364
|
+
const data = res.data;
|
|
2365
|
+
await localStorage2.setToken(data.access_token);
|
|
2366
|
+
await localStorage2.setRefreshToken(data.refresh_token);
|
|
2367
|
+
import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
2368
|
+
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
2369
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2370
|
+
originalRequest,
|
|
2371
|
+
data.access_token
|
|
2372
|
+
);
|
|
2373
|
+
processQueue(null, data.access_token);
|
|
2374
|
+
resolve(instance.request(originalRequest));
|
|
2375
|
+
}).catch(async (err) => {
|
|
2376
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
|
|
2377
|
+
await clearAuthToken();
|
|
2378
|
+
}
|
|
2379
|
+
if (err && err.response) {
|
|
2380
|
+
const { error_code } = err.response?.data || {};
|
|
2381
|
+
const { code } = err;
|
|
2382
|
+
if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
|
|
2383
|
+
await clearAuthToken();
|
|
2384
|
+
}
|
|
2385
|
+
}
|
|
2386
|
+
processQueue(err, null);
|
|
2387
|
+
}).finally(() => {
|
|
2388
|
+
isRefreshing = false;
|
|
2389
|
+
});
|
|
2390
|
+
});
|
|
2391
|
+
}
|
|
2392
|
+
}
|
|
2393
|
+
return Promise.reject(await handleError3(error));
|
|
2394
|
+
}
|
|
2395
|
+
);
|
|
2301
2396
|
instance.interceptors.response.use(
|
|
2302
2397
|
(response) => {
|
|
2303
2398
|
return handleResponse(response);
|
|
2304
2399
|
},
|
|
2305
2400
|
async (error) => {
|
|
2306
|
-
const
|
|
2401
|
+
const handleError3 = async (error2) => {
|
|
2307
2402
|
if (!error2.response) {
|
|
2308
2403
|
return error2;
|
|
2309
2404
|
}
|
|
@@ -2349,13 +2444,16 @@ var axiosClient = {
|
|
|
2349
2444
|
}).filter(([_, value]) => !!value)
|
|
2350
2445
|
);
|
|
2351
2446
|
return new Promise(function(resolve) {
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2447
|
+
import_axios.default.post(
|
|
2448
|
+
`${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2449
|
+
payload,
|
|
2450
|
+
{
|
|
2451
|
+
headers: {
|
|
2452
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2453
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2454
|
+
}
|
|
2357
2455
|
}
|
|
2358
|
-
|
|
2456
|
+
).then(async (res) => {
|
|
2359
2457
|
const data = res.data;
|
|
2360
2458
|
await localStorage2.setToken(data.access_token);
|
|
2361
2459
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
@@ -2388,7 +2486,7 @@ var axiosClient = {
|
|
|
2388
2486
|
});
|
|
2389
2487
|
}
|
|
2390
2488
|
}
|
|
2391
|
-
return Promise.reject(await
|
|
2489
|
+
return Promise.reject(await handleError3(error));
|
|
2392
2490
|
}
|
|
2393
2491
|
);
|
|
2394
2492
|
const handleResponse = (res) => {
|
|
@@ -2397,6 +2495,19 @@ var axiosClient = {
|
|
|
2397
2495
|
}
|
|
2398
2496
|
return res;
|
|
2399
2497
|
};
|
|
2498
|
+
const handleError2 = (error) => {
|
|
2499
|
+
if (error.isAxiosError && error.code === "ECONNABORTED") {
|
|
2500
|
+
console.error("Request Timeout Error:", error);
|
|
2501
|
+
return "Request Timeout Error";
|
|
2502
|
+
} else if (error.isAxiosError && !error.response) {
|
|
2503
|
+
console.error("Network Error:", error);
|
|
2504
|
+
return "Network Error";
|
|
2505
|
+
} else {
|
|
2506
|
+
console.error("Other Error:", error?.response);
|
|
2507
|
+
const errorMessage = error?.response?.data?.message || "An error occurred";
|
|
2508
|
+
return { message: errorMessage, status: error?.response?.status };
|
|
2509
|
+
}
|
|
2510
|
+
};
|
|
2400
2511
|
const clearAuthToken = async () => {
|
|
2401
2512
|
await localStorage2.clearToken();
|
|
2402
2513
|
if (typeof window !== "undefined") {
|
package/dist/environment.mjs
CHANGED
|
@@ -2240,10 +2240,10 @@ var axiosClient = {
|
|
|
2240
2240
|
timeout: 5e4,
|
|
2241
2241
|
paramsSerializer: (params) => new URLSearchParams(params).toString()
|
|
2242
2242
|
});
|
|
2243
|
-
instance.interceptors.request.use(async (
|
|
2244
|
-
const useRefreshToken =
|
|
2245
|
-
const useActionToken =
|
|
2246
|
-
const actionToken =
|
|
2243
|
+
instance.interceptors.request.use(async (configReq) => {
|
|
2244
|
+
const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
|
|
2245
|
+
const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
|
|
2246
|
+
const actionToken = configReq.headers["X-Action-Token"];
|
|
2247
2247
|
let token = null;
|
|
2248
2248
|
if (useActionToken && actionToken) {
|
|
2249
2249
|
token = actionToken;
|
|
@@ -2252,20 +2252,115 @@ var axiosClient = {
|
|
|
2252
2252
|
token = await getToken?.();
|
|
2253
2253
|
}
|
|
2254
2254
|
if (token) {
|
|
2255
|
-
|
|
2255
|
+
configReq.headers["Authorization"] = `Bearer ${token}`;
|
|
2256
2256
|
}
|
|
2257
2257
|
if (database) {
|
|
2258
|
-
|
|
2258
|
+
configReq.headers["DATABASE"] = database;
|
|
2259
2259
|
}
|
|
2260
|
-
|
|
2261
|
-
return config2;
|
|
2260
|
+
return configReq;
|
|
2262
2261
|
}, Promise.reject);
|
|
2262
|
+
const buildRefreshUrl = () => {
|
|
2263
|
+
if (!config.refreshTokenEndpoint) {
|
|
2264
|
+
return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
|
|
2265
|
+
}
|
|
2266
|
+
const ep = String(config.refreshTokenEndpoint);
|
|
2267
|
+
if (/^https?:\/\//i.test(ep)) return ep;
|
|
2268
|
+
const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
|
|
2269
|
+
const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
|
|
2270
|
+
return `${cleanBase}${cleanEp}`;
|
|
2271
|
+
};
|
|
2272
|
+
instance.interceptors.response.use(
|
|
2273
|
+
(response) => handleResponse(response),
|
|
2274
|
+
async (error) => {
|
|
2275
|
+
const handleError3 = async (err) => {
|
|
2276
|
+
if (!err.response) return err;
|
|
2277
|
+
const { data } = err.response;
|
|
2278
|
+
if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
|
|
2279
|
+
await clearAuthToken();
|
|
2280
|
+
}
|
|
2281
|
+
return data;
|
|
2282
|
+
};
|
|
2283
|
+
const originalRequest = error.config;
|
|
2284
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
2285
|
+
error.response.data.code
|
|
2286
|
+
)) {
|
|
2287
|
+
if (isRefreshing) {
|
|
2288
|
+
return new Promise(function(resolve, reject) {
|
|
2289
|
+
failedQueue.push({ resolve, reject });
|
|
2290
|
+
}).then((newToken) => {
|
|
2291
|
+
originalRequest.headers["Authorization"] = "Bearer " + newToken;
|
|
2292
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2293
|
+
originalRequest,
|
|
2294
|
+
newToken
|
|
2295
|
+
);
|
|
2296
|
+
return instance.request(originalRequest);
|
|
2297
|
+
}).catch(async (err) => {
|
|
2298
|
+
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
2299
|
+
await clearAuthToken();
|
|
2300
|
+
}
|
|
2301
|
+
});
|
|
2302
|
+
}
|
|
2303
|
+
const browserSession = await sessionStorage2.getBrowserSession();
|
|
2304
|
+
const refreshToken = await localStorage2.getRefreshToken();
|
|
2305
|
+
const accessTokenExp = await localStorage2.getAccessToken();
|
|
2306
|
+
isRefreshing = true;
|
|
2307
|
+
if (!refreshToken && (!browserSession || browserSession == "unActive")) {
|
|
2308
|
+
await clearAuthToken();
|
|
2309
|
+
} else {
|
|
2310
|
+
const payload = Object.fromEntries(
|
|
2311
|
+
Object.entries({
|
|
2312
|
+
refresh_token: refreshToken,
|
|
2313
|
+
grant_type: "refresh_token",
|
|
2314
|
+
client_id: config.config.clientId,
|
|
2315
|
+
client_secret: config.config.clientSecret
|
|
2316
|
+
}).filter(([_, v]) => !!v)
|
|
2317
|
+
);
|
|
2318
|
+
const refreshUrl = buildRefreshUrl();
|
|
2319
|
+
return new Promise(function(resolve) {
|
|
2320
|
+
axios.post(refreshUrl, payload, {
|
|
2321
|
+
headers: {
|
|
2322
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2323
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2324
|
+
}
|
|
2325
|
+
}).then(async (res) => {
|
|
2326
|
+
const data = res.data;
|
|
2327
|
+
await localStorage2.setToken(data.access_token);
|
|
2328
|
+
await localStorage2.setRefreshToken(data.refresh_token);
|
|
2329
|
+
axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
2330
|
+
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
2331
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
2332
|
+
originalRequest,
|
|
2333
|
+
data.access_token
|
|
2334
|
+
);
|
|
2335
|
+
processQueue(null, data.access_token);
|
|
2336
|
+
resolve(instance.request(originalRequest));
|
|
2337
|
+
}).catch(async (err) => {
|
|
2338
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
|
|
2339
|
+
await clearAuthToken();
|
|
2340
|
+
}
|
|
2341
|
+
if (err && err.response) {
|
|
2342
|
+
const { error_code } = err.response?.data || {};
|
|
2343
|
+
const { code } = err;
|
|
2344
|
+
if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
|
|
2345
|
+
await clearAuthToken();
|
|
2346
|
+
}
|
|
2347
|
+
}
|
|
2348
|
+
processQueue(err, null);
|
|
2349
|
+
}).finally(() => {
|
|
2350
|
+
isRefreshing = false;
|
|
2351
|
+
});
|
|
2352
|
+
});
|
|
2353
|
+
}
|
|
2354
|
+
}
|
|
2355
|
+
return Promise.reject(await handleError3(error));
|
|
2356
|
+
}
|
|
2357
|
+
);
|
|
2263
2358
|
instance.interceptors.response.use(
|
|
2264
2359
|
(response) => {
|
|
2265
2360
|
return handleResponse(response);
|
|
2266
2361
|
},
|
|
2267
2362
|
async (error) => {
|
|
2268
|
-
const
|
|
2363
|
+
const handleError3 = async (error2) => {
|
|
2269
2364
|
if (!error2.response) {
|
|
2270
2365
|
return error2;
|
|
2271
2366
|
}
|
|
@@ -2311,13 +2406,16 @@ var axiosClient = {
|
|
|
2311
2406
|
}).filter(([_, value]) => !!value)
|
|
2312
2407
|
);
|
|
2313
2408
|
return new Promise(function(resolve) {
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2409
|
+
axios.post(
|
|
2410
|
+
`${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
2411
|
+
payload,
|
|
2412
|
+
{
|
|
2413
|
+
headers: {
|
|
2414
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
2415
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
2416
|
+
}
|
|
2319
2417
|
}
|
|
2320
|
-
|
|
2418
|
+
).then(async (res) => {
|
|
2321
2419
|
const data = res.data;
|
|
2322
2420
|
await localStorage2.setToken(data.access_token);
|
|
2323
2421
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
@@ -2350,7 +2448,7 @@ var axiosClient = {
|
|
|
2350
2448
|
});
|
|
2351
2449
|
}
|
|
2352
2450
|
}
|
|
2353
|
-
return Promise.reject(await
|
|
2451
|
+
return Promise.reject(await handleError3(error));
|
|
2354
2452
|
}
|
|
2355
2453
|
);
|
|
2356
2454
|
const handleResponse = (res) => {
|
|
@@ -2359,6 +2457,19 @@ var axiosClient = {
|
|
|
2359
2457
|
}
|
|
2360
2458
|
return res;
|
|
2361
2459
|
};
|
|
2460
|
+
const handleError2 = (error) => {
|
|
2461
|
+
if (error.isAxiosError && error.code === "ECONNABORTED") {
|
|
2462
|
+
console.error("Request Timeout Error:", error);
|
|
2463
|
+
return "Request Timeout Error";
|
|
2464
|
+
} else if (error.isAxiosError && !error.response) {
|
|
2465
|
+
console.error("Network Error:", error);
|
|
2466
|
+
return "Network Error";
|
|
2467
|
+
} else {
|
|
2468
|
+
console.error("Other Error:", error?.response);
|
|
2469
|
+
const errorMessage = error?.response?.data?.message || "An error occurred";
|
|
2470
|
+
return { message: errorMessage, status: error?.response?.status };
|
|
2471
|
+
}
|
|
2472
|
+
};
|
|
2362
2473
|
const clearAuthToken = async () => {
|
|
2363
2474
|
await localStorage2.clearToken();
|
|
2364
2475
|
if (typeof window !== "undefined") {
|
package/dist/provider.js
CHANGED
|
@@ -5915,10 +5915,10 @@ var axiosClient = {
|
|
|
5915
5915
|
timeout: 5e4,
|
|
5916
5916
|
paramsSerializer: (params) => new URLSearchParams(params).toString()
|
|
5917
5917
|
});
|
|
5918
|
-
instance.interceptors.request.use(async (
|
|
5919
|
-
const useRefreshToken =
|
|
5920
|
-
const useActionToken =
|
|
5921
|
-
const actionToken =
|
|
5918
|
+
instance.interceptors.request.use(async (configReq) => {
|
|
5919
|
+
const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
|
|
5920
|
+
const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
|
|
5921
|
+
const actionToken = configReq.headers["X-Action-Token"];
|
|
5922
5922
|
let token = null;
|
|
5923
5923
|
if (useActionToken && actionToken) {
|
|
5924
5924
|
token = actionToken;
|
|
@@ -5927,20 +5927,115 @@ var axiosClient = {
|
|
|
5927
5927
|
token = await getToken?.();
|
|
5928
5928
|
}
|
|
5929
5929
|
if (token) {
|
|
5930
|
-
|
|
5930
|
+
configReq.headers["Authorization"] = `Bearer ${token}`;
|
|
5931
5931
|
}
|
|
5932
5932
|
if (database) {
|
|
5933
|
-
|
|
5933
|
+
configReq.headers["DATABASE"] = database;
|
|
5934
5934
|
}
|
|
5935
|
-
|
|
5936
|
-
return config2;
|
|
5935
|
+
return configReq;
|
|
5937
5936
|
}, Promise.reject);
|
|
5937
|
+
const buildRefreshUrl = () => {
|
|
5938
|
+
if (!config.refreshTokenEndpoint) {
|
|
5939
|
+
return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
|
|
5940
|
+
}
|
|
5941
|
+
const ep = String(config.refreshTokenEndpoint);
|
|
5942
|
+
if (/^https?:\/\//i.test(ep)) return ep;
|
|
5943
|
+
const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
|
|
5944
|
+
const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
|
|
5945
|
+
return `${cleanBase}${cleanEp}`;
|
|
5946
|
+
};
|
|
5947
|
+
instance.interceptors.response.use(
|
|
5948
|
+
(response) => handleResponse(response),
|
|
5949
|
+
async (error) => {
|
|
5950
|
+
const handleError3 = async (err) => {
|
|
5951
|
+
if (!err.response) return err;
|
|
5952
|
+
const { data } = err.response;
|
|
5953
|
+
if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
|
|
5954
|
+
await clearAuthToken();
|
|
5955
|
+
}
|
|
5956
|
+
return data;
|
|
5957
|
+
};
|
|
5958
|
+
const originalRequest = error.config;
|
|
5959
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
5960
|
+
error.response.data.code
|
|
5961
|
+
)) {
|
|
5962
|
+
if (isRefreshing) {
|
|
5963
|
+
return new Promise(function(resolve, reject) {
|
|
5964
|
+
failedQueue.push({ resolve, reject });
|
|
5965
|
+
}).then((newToken) => {
|
|
5966
|
+
originalRequest.headers["Authorization"] = "Bearer " + newToken;
|
|
5967
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
5968
|
+
originalRequest,
|
|
5969
|
+
newToken
|
|
5970
|
+
);
|
|
5971
|
+
return instance.request(originalRequest);
|
|
5972
|
+
}).catch(async (err) => {
|
|
5973
|
+
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
5974
|
+
await clearAuthToken();
|
|
5975
|
+
}
|
|
5976
|
+
});
|
|
5977
|
+
}
|
|
5978
|
+
const browserSession = await sessionStorage2.getBrowserSession();
|
|
5979
|
+
const refreshToken = await localStorage2.getRefreshToken();
|
|
5980
|
+
const accessTokenExp = await localStorage2.getAccessToken();
|
|
5981
|
+
isRefreshing = true;
|
|
5982
|
+
if (!refreshToken && (!browserSession || browserSession == "unActive")) {
|
|
5983
|
+
await clearAuthToken();
|
|
5984
|
+
} else {
|
|
5985
|
+
const payload = Object.fromEntries(
|
|
5986
|
+
Object.entries({
|
|
5987
|
+
refresh_token: refreshToken,
|
|
5988
|
+
grant_type: "refresh_token",
|
|
5989
|
+
client_id: config.config.clientId,
|
|
5990
|
+
client_secret: config.config.clientSecret
|
|
5991
|
+
}).filter(([_, v]) => !!v)
|
|
5992
|
+
);
|
|
5993
|
+
const refreshUrl = buildRefreshUrl();
|
|
5994
|
+
return new Promise(function(resolve) {
|
|
5995
|
+
import_axios.default.post(refreshUrl, payload, {
|
|
5996
|
+
headers: {
|
|
5997
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
5998
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
5999
|
+
}
|
|
6000
|
+
}).then(async (res) => {
|
|
6001
|
+
const data = res.data;
|
|
6002
|
+
await localStorage2.setToken(data.access_token);
|
|
6003
|
+
await localStorage2.setRefreshToken(data.refresh_token);
|
|
6004
|
+
import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
6005
|
+
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
6006
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
6007
|
+
originalRequest,
|
|
6008
|
+
data.access_token
|
|
6009
|
+
);
|
|
6010
|
+
processQueue(null, data.access_token);
|
|
6011
|
+
resolve(instance.request(originalRequest));
|
|
6012
|
+
}).catch(async (err) => {
|
|
6013
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
|
|
6014
|
+
await clearAuthToken();
|
|
6015
|
+
}
|
|
6016
|
+
if (err && err.response) {
|
|
6017
|
+
const { error_code } = err.response?.data || {};
|
|
6018
|
+
const { code } = err;
|
|
6019
|
+
if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
|
|
6020
|
+
await clearAuthToken();
|
|
6021
|
+
}
|
|
6022
|
+
}
|
|
6023
|
+
processQueue(err, null);
|
|
6024
|
+
}).finally(() => {
|
|
6025
|
+
isRefreshing = false;
|
|
6026
|
+
});
|
|
6027
|
+
});
|
|
6028
|
+
}
|
|
6029
|
+
}
|
|
6030
|
+
return Promise.reject(await handleError3(error));
|
|
6031
|
+
}
|
|
6032
|
+
);
|
|
5938
6033
|
instance.interceptors.response.use(
|
|
5939
6034
|
(response) => {
|
|
5940
6035
|
return handleResponse(response);
|
|
5941
6036
|
},
|
|
5942
6037
|
async (error) => {
|
|
5943
|
-
const
|
|
6038
|
+
const handleError3 = async (error2) => {
|
|
5944
6039
|
if (!error2.response) {
|
|
5945
6040
|
return error2;
|
|
5946
6041
|
}
|
|
@@ -5986,13 +6081,16 @@ var axiosClient = {
|
|
|
5986
6081
|
}).filter(([_, value]) => !!value)
|
|
5987
6082
|
);
|
|
5988
6083
|
return new Promise(function(resolve) {
|
|
5989
|
-
|
|
5990
|
-
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
|
|
6084
|
+
import_axios.default.post(
|
|
6085
|
+
`${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
6086
|
+
payload,
|
|
6087
|
+
{
|
|
6088
|
+
headers: {
|
|
6089
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
6090
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
6091
|
+
}
|
|
5994
6092
|
}
|
|
5995
|
-
|
|
6093
|
+
).then(async (res) => {
|
|
5996
6094
|
const data = res.data;
|
|
5997
6095
|
await localStorage2.setToken(data.access_token);
|
|
5998
6096
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
@@ -6025,7 +6123,7 @@ var axiosClient = {
|
|
|
6025
6123
|
});
|
|
6026
6124
|
}
|
|
6027
6125
|
}
|
|
6028
|
-
return Promise.reject(await
|
|
6126
|
+
return Promise.reject(await handleError3(error));
|
|
6029
6127
|
}
|
|
6030
6128
|
);
|
|
6031
6129
|
const handleResponse = (res) => {
|
|
@@ -6034,6 +6132,19 @@ var axiosClient = {
|
|
|
6034
6132
|
}
|
|
6035
6133
|
return res;
|
|
6036
6134
|
};
|
|
6135
|
+
const handleError2 = (error) => {
|
|
6136
|
+
if (error.isAxiosError && error.code === "ECONNABORTED") {
|
|
6137
|
+
console.error("Request Timeout Error:", error);
|
|
6138
|
+
return "Request Timeout Error";
|
|
6139
|
+
} else if (error.isAxiosError && !error.response) {
|
|
6140
|
+
console.error("Network Error:", error);
|
|
6141
|
+
return "Network Error";
|
|
6142
|
+
} else {
|
|
6143
|
+
console.error("Other Error:", error?.response);
|
|
6144
|
+
const errorMessage = error?.response?.data?.message || "An error occurred";
|
|
6145
|
+
return { message: errorMessage, status: error?.response?.status };
|
|
6146
|
+
}
|
|
6147
|
+
};
|
|
6037
6148
|
const clearAuthToken = async () => {
|
|
6038
6149
|
await localStorage2.clearToken();
|
|
6039
6150
|
if (typeof window !== "undefined") {
|
package/dist/provider.mjs
CHANGED
|
@@ -5872,10 +5872,10 @@ var axiosClient = {
|
|
|
5872
5872
|
timeout: 5e4,
|
|
5873
5873
|
paramsSerializer: (params) => new URLSearchParams(params).toString()
|
|
5874
5874
|
});
|
|
5875
|
-
instance.interceptors.request.use(async (
|
|
5876
|
-
const useRefreshToken =
|
|
5877
|
-
const useActionToken =
|
|
5878
|
-
const actionToken =
|
|
5875
|
+
instance.interceptors.request.use(async (configReq) => {
|
|
5876
|
+
const useRefreshToken = configReq.headers["X-Use-Refresh-Token"] === "true";
|
|
5877
|
+
const useActionToken = configReq.headers["X-Use-Action-Token"] === "true";
|
|
5878
|
+
const actionToken = configReq.headers["X-Action-Token"];
|
|
5879
5879
|
let token = null;
|
|
5880
5880
|
if (useActionToken && actionToken) {
|
|
5881
5881
|
token = actionToken;
|
|
@@ -5884,20 +5884,115 @@ var axiosClient = {
|
|
|
5884
5884
|
token = await getToken?.();
|
|
5885
5885
|
}
|
|
5886
5886
|
if (token) {
|
|
5887
|
-
|
|
5887
|
+
configReq.headers["Authorization"] = `Bearer ${token}`;
|
|
5888
5888
|
}
|
|
5889
5889
|
if (database) {
|
|
5890
|
-
|
|
5890
|
+
configReq.headers["DATABASE"] = database;
|
|
5891
5891
|
}
|
|
5892
|
-
|
|
5893
|
-
return config2;
|
|
5892
|
+
return configReq;
|
|
5894
5893
|
}, Promise.reject);
|
|
5894
|
+
const buildRefreshUrl = () => {
|
|
5895
|
+
if (!config.refreshTokenEndpoint) {
|
|
5896
|
+
return `${getBaseUrl(config?.baseUrl)}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`;
|
|
5897
|
+
}
|
|
5898
|
+
const ep = String(config.refreshTokenEndpoint);
|
|
5899
|
+
if (/^https?:\/\//i.test(ep)) return ep;
|
|
5900
|
+
const cleanBase = String(config?.baseUrl || "").replace(/\/$/, "");
|
|
5901
|
+
const cleanEp = ep.startsWith("/") ? ep : `/${ep}`;
|
|
5902
|
+
return `${cleanBase}${cleanEp}`;
|
|
5903
|
+
};
|
|
5904
|
+
instance.interceptors.response.use(
|
|
5905
|
+
(response) => handleResponse(response),
|
|
5906
|
+
async (error) => {
|
|
5907
|
+
const handleError3 = async (err) => {
|
|
5908
|
+
if (!err.response) return err;
|
|
5909
|
+
const { data } = err.response;
|
|
5910
|
+
if (data && data.code === 400 && ["invalid_grant"].includes(data.data?.error)) {
|
|
5911
|
+
await clearAuthToken();
|
|
5912
|
+
}
|
|
5913
|
+
return data;
|
|
5914
|
+
};
|
|
5915
|
+
const originalRequest = error.config;
|
|
5916
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
|
5917
|
+
error.response.data.code
|
|
5918
|
+
)) {
|
|
5919
|
+
if (isRefreshing) {
|
|
5920
|
+
return new Promise(function(resolve, reject) {
|
|
5921
|
+
failedQueue.push({ resolve, reject });
|
|
5922
|
+
}).then((newToken) => {
|
|
5923
|
+
originalRequest.headers["Authorization"] = "Bearer " + newToken;
|
|
5924
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
5925
|
+
originalRequest,
|
|
5926
|
+
newToken
|
|
5927
|
+
);
|
|
5928
|
+
return instance.request(originalRequest);
|
|
5929
|
+
}).catch(async (err) => {
|
|
5930
|
+
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
|
5931
|
+
await clearAuthToken();
|
|
5932
|
+
}
|
|
5933
|
+
});
|
|
5934
|
+
}
|
|
5935
|
+
const browserSession = await sessionStorage2.getBrowserSession();
|
|
5936
|
+
const refreshToken = await localStorage2.getRefreshToken();
|
|
5937
|
+
const accessTokenExp = await localStorage2.getAccessToken();
|
|
5938
|
+
isRefreshing = true;
|
|
5939
|
+
if (!refreshToken && (!browserSession || browserSession == "unActive")) {
|
|
5940
|
+
await clearAuthToken();
|
|
5941
|
+
} else {
|
|
5942
|
+
const payload = Object.fromEntries(
|
|
5943
|
+
Object.entries({
|
|
5944
|
+
refresh_token: refreshToken,
|
|
5945
|
+
grant_type: "refresh_token",
|
|
5946
|
+
client_id: config.config.clientId,
|
|
5947
|
+
client_secret: config.config.clientSecret
|
|
5948
|
+
}).filter(([_, v]) => !!v)
|
|
5949
|
+
);
|
|
5950
|
+
const refreshUrl = buildRefreshUrl();
|
|
5951
|
+
return new Promise(function(resolve) {
|
|
5952
|
+
axios.post(refreshUrl, payload, {
|
|
5953
|
+
headers: {
|
|
5954
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
5955
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
5956
|
+
}
|
|
5957
|
+
}).then(async (res) => {
|
|
5958
|
+
const data = res.data;
|
|
5959
|
+
await localStorage2.setToken(data.access_token);
|
|
5960
|
+
await localStorage2.setRefreshToken(data.refresh_token);
|
|
5961
|
+
axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
|
5962
|
+
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
|
5963
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
|
5964
|
+
originalRequest,
|
|
5965
|
+
data.access_token
|
|
5966
|
+
);
|
|
5967
|
+
processQueue(null, data.access_token);
|
|
5968
|
+
resolve(instance.request(originalRequest));
|
|
5969
|
+
}).catch(async (err) => {
|
|
5970
|
+
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_2FA_006")) {
|
|
5971
|
+
await clearAuthToken();
|
|
5972
|
+
}
|
|
5973
|
+
if (err && err.response) {
|
|
5974
|
+
const { error_code } = err.response?.data || {};
|
|
5975
|
+
const { code } = err;
|
|
5976
|
+
if (error_code === "AUTHEN_FAIL" || code === "ERR_2FA_006") {
|
|
5977
|
+
await clearAuthToken();
|
|
5978
|
+
}
|
|
5979
|
+
}
|
|
5980
|
+
processQueue(err, null);
|
|
5981
|
+
}).finally(() => {
|
|
5982
|
+
isRefreshing = false;
|
|
5983
|
+
});
|
|
5984
|
+
});
|
|
5985
|
+
}
|
|
5986
|
+
}
|
|
5987
|
+
return Promise.reject(await handleError3(error));
|
|
5988
|
+
}
|
|
5989
|
+
);
|
|
5895
5990
|
instance.interceptors.response.use(
|
|
5896
5991
|
(response) => {
|
|
5897
5992
|
return handleResponse(response);
|
|
5898
5993
|
},
|
|
5899
5994
|
async (error) => {
|
|
5900
|
-
const
|
|
5995
|
+
const handleError3 = async (error2) => {
|
|
5901
5996
|
if (!error2.response) {
|
|
5902
5997
|
return error2;
|
|
5903
5998
|
}
|
|
@@ -5943,13 +6038,16 @@ var axiosClient = {
|
|
|
5943
6038
|
}).filter(([_, value]) => !!value)
|
|
5944
6039
|
);
|
|
5945
6040
|
return new Promise(function(resolve) {
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
|
|
6041
|
+
axios.post(
|
|
6042
|
+
`${config?.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
|
6043
|
+
payload,
|
|
6044
|
+
{
|
|
6045
|
+
headers: {
|
|
6046
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
|
6047
|
+
Authorization: `Bearer ${accessTokenExp}`
|
|
6048
|
+
}
|
|
5951
6049
|
}
|
|
5952
|
-
|
|
6050
|
+
).then(async (res) => {
|
|
5953
6051
|
const data = res.data;
|
|
5954
6052
|
await localStorage2.setToken(data.access_token);
|
|
5955
6053
|
await localStorage2.setRefreshToken(data.refresh_token);
|
|
@@ -5982,7 +6080,7 @@ var axiosClient = {
|
|
|
5982
6080
|
});
|
|
5983
6081
|
}
|
|
5984
6082
|
}
|
|
5985
|
-
return Promise.reject(await
|
|
6083
|
+
return Promise.reject(await handleError3(error));
|
|
5986
6084
|
}
|
|
5987
6085
|
);
|
|
5988
6086
|
const handleResponse = (res) => {
|
|
@@ -5991,6 +6089,19 @@ var axiosClient = {
|
|
|
5991
6089
|
}
|
|
5992
6090
|
return res;
|
|
5993
6091
|
};
|
|
6092
|
+
const handleError2 = (error) => {
|
|
6093
|
+
if (error.isAxiosError && error.code === "ECONNABORTED") {
|
|
6094
|
+
console.error("Request Timeout Error:", error);
|
|
6095
|
+
return "Request Timeout Error";
|
|
6096
|
+
} else if (error.isAxiosError && !error.response) {
|
|
6097
|
+
console.error("Network Error:", error);
|
|
6098
|
+
return "Network Error";
|
|
6099
|
+
} else {
|
|
6100
|
+
console.error("Other Error:", error?.response);
|
|
6101
|
+
const errorMessage = error?.response?.data?.message || "An error occurred";
|
|
6102
|
+
return { message: errorMessage, status: error?.response?.status };
|
|
6103
|
+
}
|
|
6104
|
+
};
|
|
5994
6105
|
const clearAuthToken = async () => {
|
|
5995
6106
|
await localStorage2.clearToken();
|
|
5996
6107
|
if (typeof window !== "undefined") {
|