@fctc/interface-logic 1.0.5 → 1.0.6
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 +35 -5
- package/dist/config.mjs +35 -5
- 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 +37 -5
- package/dist/environment.mjs +37 -5
- package/dist/hook.d.mts +7 -1
- package/dist/hook.d.ts +7 -1
- package/dist/hook.js +325 -103
- package/dist/hook.mjs +283 -63
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +332 -108
- package/dist/index.mjs +284 -63
- package/dist/model.js +40 -5
- package/dist/model.mjs +40 -5
- package/dist/provider.js +150 -5
- package/dist/provider.mjs +150 -5
- package/dist/services.d.mts +32 -0
- package/dist/services.d.ts +32 -0
- package/dist/services.js +183 -5
- package/dist/services.mjs +183 -5
- 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 +2 -5
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
|
|
@@ -2294,6 +2297,27 @@ function matchDomain(record, domain) {
|
|
2294
2297
|
return matchCondition(record, condStack.pop());
|
2295
2298
|
}
|
2296
2299
|
|
2300
|
+
// src/utils/function.ts
|
2301
|
+
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
2302
|
+
if (!originalRequest.data) return originalRequest.data;
|
2303
|
+
if (typeof originalRequest.data === "string") {
|
2304
|
+
try {
|
2305
|
+
const parsedData = JSON.parse(originalRequest.data);
|
2306
|
+
if (parsedData.with_context && typeof parsedData.with_context === "object") {
|
2307
|
+
parsedData.with_context.token = newAccessToken;
|
2308
|
+
}
|
2309
|
+
return JSON.stringify(parsedData);
|
2310
|
+
} catch (e) {
|
2311
|
+
console.warn("Failed to parse originalRequest.data", e);
|
2312
|
+
return originalRequest.data;
|
2313
|
+
}
|
2314
|
+
}
|
2315
|
+
if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
|
2316
|
+
originalRequest.data.with_context.token = newAccessToken;
|
2317
|
+
}
|
2318
|
+
return originalRequest.data;
|
2319
|
+
};
|
2320
|
+
|
2297
2321
|
// src/utils/storage/local-storage.ts
|
2298
2322
|
var localStorageUtils = () => {
|
2299
2323
|
const setToken = async (access_token) => {
|
@@ -2357,7 +2381,8 @@ var axiosClient = {
|
|
2357
2381
|
});
|
2358
2382
|
instance.interceptors.request.use(
|
2359
2383
|
async (config2) => {
|
2360
|
-
const
|
2384
|
+
const useRefreshToken = config2.useRefreshToken;
|
2385
|
+
const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
|
2361
2386
|
if (token) {
|
2362
2387
|
config2.headers["Authorization"] = "Bearer " + token;
|
2363
2388
|
}
|
@@ -2383,7 +2408,7 @@ var axiosClient = {
|
|
2383
2408
|
return data;
|
2384
2409
|
};
|
2385
2410
|
const originalRequest = error.config;
|
2386
|
-
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
|
2411
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
2387
2412
|
error.response.data.code
|
2388
2413
|
)) {
|
2389
2414
|
if (isRefreshing) {
|
@@ -2391,6 +2416,10 @@ var axiosClient = {
|
|
2391
2416
|
failedQueue.push({ resolve, reject });
|
2392
2417
|
}).then((token) => {
|
2393
2418
|
originalRequest.headers["Authorization"] = "Bearer " + token;
|
2419
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2420
|
+
originalRequest,
|
2421
|
+
token
|
2422
|
+
);
|
2394
2423
|
return instance.request(originalRequest);
|
2395
2424
|
}).catch(async (err) => {
|
2396
2425
|
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
@@ -2415,11 +2444,11 @@ var axiosClient = {
|
|
2415
2444
|
);
|
2416
2445
|
return new Promise(function(resolve) {
|
2417
2446
|
import_axios.default.post(
|
2418
|
-
`${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2447
|
+
`${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2419
2448
|
payload,
|
2420
2449
|
{
|
2421
2450
|
headers: {
|
2422
|
-
"Content-Type": "multipart/form-data",
|
2451
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
2423
2452
|
Authorization: `Bearer ${accessTokenExp}`
|
2424
2453
|
}
|
2425
2454
|
}
|
@@ -2429,10 +2458,14 @@ var axiosClient = {
|
|
2429
2458
|
await localStorage2.setRefreshToken(data.refresh_token);
|
2430
2459
|
import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
2431
2460
|
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
2461
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2462
|
+
originalRequest,
|
2463
|
+
data.access_token
|
2464
|
+
);
|
2432
2465
|
processQueue(null, data.access_token);
|
2433
2466
|
resolve(instance.request(originalRequest));
|
2434
2467
|
}).catch(async (err) => {
|
2435
|
-
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
|
2468
|
+
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") {
|
2436
2469
|
await clearAuthToken();
|
2437
2470
|
}
|
2438
2471
|
if (err && err.response) {
|
@@ -3125,6 +3158,7 @@ var EnvStore = class {
|
|
3125
3158
|
db;
|
3126
3159
|
localStorageUtils;
|
3127
3160
|
sessionStorageUtils;
|
3161
|
+
refreshTokenEndpoint;
|
3128
3162
|
constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
|
3129
3163
|
this.envStore = envStore2;
|
3130
3164
|
this.localStorageUtils = localStorageUtils2;
|
@@ -3141,6 +3175,7 @@ var EnvStore = class {
|
|
3141
3175
|
this.companies = env2?.companies || [];
|
3142
3176
|
this.user = env2?.user;
|
3143
3177
|
this.db = env2?.db;
|
3178
|
+
this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
|
3144
3179
|
}
|
3145
3180
|
setupEnv(envConfig) {
|
3146
3181
|
const dispatch = this.envStore.dispatch;
|
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
|
|
@@ -2256,6 +2259,27 @@ function matchDomain(record, domain) {
|
|
2256
2259
|
return matchCondition(record, condStack.pop());
|
2257
2260
|
}
|
2258
2261
|
|
2262
|
+
// src/utils/function.ts
|
2263
|
+
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
2264
|
+
if (!originalRequest.data) return originalRequest.data;
|
2265
|
+
if (typeof originalRequest.data === "string") {
|
2266
|
+
try {
|
2267
|
+
const parsedData = JSON.parse(originalRequest.data);
|
2268
|
+
if (parsedData.with_context && typeof parsedData.with_context === "object") {
|
2269
|
+
parsedData.with_context.token = newAccessToken;
|
2270
|
+
}
|
2271
|
+
return JSON.stringify(parsedData);
|
2272
|
+
} catch (e) {
|
2273
|
+
console.warn("Failed to parse originalRequest.data", e);
|
2274
|
+
return originalRequest.data;
|
2275
|
+
}
|
2276
|
+
}
|
2277
|
+
if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
|
2278
|
+
originalRequest.data.with_context.token = newAccessToken;
|
2279
|
+
}
|
2280
|
+
return originalRequest.data;
|
2281
|
+
};
|
2282
|
+
|
2259
2283
|
// src/utils/storage/local-storage.ts
|
2260
2284
|
var localStorageUtils = () => {
|
2261
2285
|
const setToken = async (access_token) => {
|
@@ -2319,7 +2343,8 @@ var axiosClient = {
|
|
2319
2343
|
});
|
2320
2344
|
instance.interceptors.request.use(
|
2321
2345
|
async (config2) => {
|
2322
|
-
const
|
2346
|
+
const useRefreshToken = config2.useRefreshToken;
|
2347
|
+
const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
|
2323
2348
|
if (token) {
|
2324
2349
|
config2.headers["Authorization"] = "Bearer " + token;
|
2325
2350
|
}
|
@@ -2345,7 +2370,7 @@ var axiosClient = {
|
|
2345
2370
|
return data;
|
2346
2371
|
};
|
2347
2372
|
const originalRequest = error.config;
|
2348
|
-
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
|
2373
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
2349
2374
|
error.response.data.code
|
2350
2375
|
)) {
|
2351
2376
|
if (isRefreshing) {
|
@@ -2353,6 +2378,10 @@ var axiosClient = {
|
|
2353
2378
|
failedQueue.push({ resolve, reject });
|
2354
2379
|
}).then((token) => {
|
2355
2380
|
originalRequest.headers["Authorization"] = "Bearer " + token;
|
2381
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2382
|
+
originalRequest,
|
2383
|
+
token
|
2384
|
+
);
|
2356
2385
|
return instance.request(originalRequest);
|
2357
2386
|
}).catch(async (err) => {
|
2358
2387
|
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
@@ -2377,11 +2406,11 @@ var axiosClient = {
|
|
2377
2406
|
);
|
2378
2407
|
return new Promise(function(resolve) {
|
2379
2408
|
axios.post(
|
2380
|
-
`${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2409
|
+
`${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2381
2410
|
payload,
|
2382
2411
|
{
|
2383
2412
|
headers: {
|
2384
|
-
"Content-Type": "multipart/form-data",
|
2413
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
2385
2414
|
Authorization: `Bearer ${accessTokenExp}`
|
2386
2415
|
}
|
2387
2416
|
}
|
@@ -2391,10 +2420,14 @@ var axiosClient = {
|
|
2391
2420
|
await localStorage2.setRefreshToken(data.refresh_token);
|
2392
2421
|
axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
2393
2422
|
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
2423
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2424
|
+
originalRequest,
|
2425
|
+
data.access_token
|
2426
|
+
);
|
2394
2427
|
processQueue(null, data.access_token);
|
2395
2428
|
resolve(instance.request(originalRequest));
|
2396
2429
|
}).catch(async (err) => {
|
2397
|
-
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
|
2430
|
+
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") {
|
2398
2431
|
await clearAuthToken();
|
2399
2432
|
}
|
2400
2433
|
if (err && err.response) {
|
@@ -3087,6 +3120,7 @@ var EnvStore = class {
|
|
3087
3120
|
db;
|
3088
3121
|
localStorageUtils;
|
3089
3122
|
sessionStorageUtils;
|
3123
|
+
refreshTokenEndpoint;
|
3090
3124
|
constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
|
3091
3125
|
this.envStore = envStore2;
|
3092
3126
|
this.localStorageUtils = localStorageUtils2;
|
@@ -3103,6 +3137,7 @@ var EnvStore = class {
|
|
3103
3137
|
this.companies = env2?.companies || [];
|
3104
3138
|
this.user = env2?.user;
|
3105
3139
|
this.db = env2?.db;
|
3140
|
+
this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
|
3106
3141
|
}
|
3107
3142
|
setupEnv(envConfig) {
|
3108
3143
|
const dispatch = this.envStore.dispatch;
|
package/dist/provider.js
CHANGED
@@ -2799,6 +2799,27 @@ function matchDomain(record, domain) {
|
|
2799
2799
|
return matchCondition(record, condStack.pop());
|
2800
2800
|
}
|
2801
2801
|
|
2802
|
+
// src/utils/function.ts
|
2803
|
+
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
2804
|
+
if (!originalRequest.data) return originalRequest.data;
|
2805
|
+
if (typeof originalRequest.data === "string") {
|
2806
|
+
try {
|
2807
|
+
const parsedData = JSON.parse(originalRequest.data);
|
2808
|
+
if (parsedData.with_context && typeof parsedData.with_context === "object") {
|
2809
|
+
parsedData.with_context.token = newAccessToken;
|
2810
|
+
}
|
2811
|
+
return JSON.stringify(parsedData);
|
2812
|
+
} catch (e) {
|
2813
|
+
console.warn("Failed to parse originalRequest.data", e);
|
2814
|
+
return originalRequest.data;
|
2815
|
+
}
|
2816
|
+
}
|
2817
|
+
if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
|
2818
|
+
originalRequest.data.with_context.token = newAccessToken;
|
2819
|
+
}
|
2820
|
+
return originalRequest.data;
|
2821
|
+
};
|
2822
|
+
|
2802
2823
|
// src/utils/storage/local-storage.ts
|
2803
2824
|
var localStorageUtils = () => {
|
2804
2825
|
const setToken = async (access_token) => {
|
@@ -2862,7 +2883,8 @@ var axiosClient = {
|
|
2862
2883
|
});
|
2863
2884
|
instance.interceptors.request.use(
|
2864
2885
|
async (config2) => {
|
2865
|
-
const
|
2886
|
+
const useRefreshToken = config2.useRefreshToken;
|
2887
|
+
const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
|
2866
2888
|
if (token) {
|
2867
2889
|
config2.headers["Authorization"] = "Bearer " + token;
|
2868
2890
|
}
|
@@ -2888,7 +2910,7 @@ var axiosClient = {
|
|
2888
2910
|
return data;
|
2889
2911
|
};
|
2890
2912
|
const originalRequest = error.config;
|
2891
|
-
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
|
2913
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
2892
2914
|
error.response.data.code
|
2893
2915
|
)) {
|
2894
2916
|
if (isRefreshing) {
|
@@ -2896,6 +2918,10 @@ var axiosClient = {
|
|
2896
2918
|
failedQueue.push({ resolve, reject });
|
2897
2919
|
}).then((token) => {
|
2898
2920
|
originalRequest.headers["Authorization"] = "Bearer " + token;
|
2921
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2922
|
+
originalRequest,
|
2923
|
+
token
|
2924
|
+
);
|
2899
2925
|
return instance.request(originalRequest);
|
2900
2926
|
}).catch(async (err) => {
|
2901
2927
|
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
@@ -2920,11 +2946,11 @@ var axiosClient = {
|
|
2920
2946
|
);
|
2921
2947
|
return new Promise(function(resolve) {
|
2922
2948
|
import_axios.default.post(
|
2923
|
-
`${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2949
|
+
`${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2924
2950
|
payload,
|
2925
2951
|
{
|
2926
2952
|
headers: {
|
2927
|
-
"Content-Type": "multipart/form-data",
|
2953
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
2928
2954
|
Authorization: `Bearer ${accessTokenExp}`
|
2929
2955
|
}
|
2930
2956
|
}
|
@@ -2934,10 +2960,14 @@ var axiosClient = {
|
|
2934
2960
|
await localStorage2.setRefreshToken(data.refresh_token);
|
2935
2961
|
import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
2936
2962
|
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
2963
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2964
|
+
originalRequest,
|
2965
|
+
data.access_token
|
2966
|
+
);
|
2937
2967
|
processQueue(null, data.access_token);
|
2938
2968
|
resolve(instance.request(originalRequest));
|
2939
2969
|
}).catch(async (err) => {
|
2940
|
-
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
|
2970
|
+
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") {
|
2941
2971
|
await clearAuthToken();
|
2942
2972
|
}
|
2943
2973
|
if (err && err.response) {
|
@@ -3016,6 +3046,7 @@ var EnvStore = class {
|
|
3016
3046
|
db;
|
3017
3047
|
localStorageUtils;
|
3018
3048
|
sessionStorageUtils;
|
3049
|
+
refreshTokenEndpoint;
|
3019
3050
|
constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
|
3020
3051
|
this.envStore = envStore2;
|
3021
3052
|
this.localStorageUtils = localStorageUtils2;
|
@@ -3032,6 +3063,7 @@ var EnvStore = class {
|
|
3032
3063
|
this.companies = env2?.companies || [];
|
3033
3064
|
this.user = env2?.user;
|
3034
3065
|
this.db = env2?.db;
|
3066
|
+
this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
|
3035
3067
|
}
|
3036
3068
|
setupEnv(envConfig) {
|
3037
3069
|
const dispatch = this.envStore.dispatch;
|
@@ -3406,6 +3438,119 @@ var ViewService = {
|
|
3406
3438
|
"Content-Type": "application/json"
|
3407
3439
|
}
|
3408
3440
|
});
|
3441
|
+
},
|
3442
|
+
async grantAccess({
|
3443
|
+
redirect_uri,
|
3444
|
+
state,
|
3445
|
+
client_id,
|
3446
|
+
scopes
|
3447
|
+
}) {
|
3448
|
+
const env2 = getEnv();
|
3449
|
+
const jsonData = {
|
3450
|
+
redirect_uri,
|
3451
|
+
state,
|
3452
|
+
client_id,
|
3453
|
+
scopes
|
3454
|
+
};
|
3455
|
+
return env2?.requests.post("/grant-access" /* GRANT_ACCESS */, jsonData, {
|
3456
|
+
headers: {
|
3457
|
+
"Content-Type": "application/json"
|
3458
|
+
},
|
3459
|
+
withCredentials: true
|
3460
|
+
});
|
3461
|
+
},
|
3462
|
+
async getFieldsViewSecurity({
|
3463
|
+
method,
|
3464
|
+
token,
|
3465
|
+
views
|
3466
|
+
}) {
|
3467
|
+
const env2 = getEnv();
|
3468
|
+
const jsonData = {
|
3469
|
+
method,
|
3470
|
+
kwargs: {
|
3471
|
+
views
|
3472
|
+
},
|
3473
|
+
with_context: {
|
3474
|
+
token
|
3475
|
+
}
|
3476
|
+
};
|
3477
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3478
|
+
headers: {
|
3479
|
+
"Content-Type": "application/json"
|
3480
|
+
}
|
3481
|
+
});
|
3482
|
+
},
|
3483
|
+
async settingsWebRead2fa({
|
3484
|
+
method,
|
3485
|
+
model,
|
3486
|
+
kwargs,
|
3487
|
+
token
|
3488
|
+
}) {
|
3489
|
+
const env2 = getEnv();
|
3490
|
+
const jsonData = {
|
3491
|
+
method,
|
3492
|
+
model,
|
3493
|
+
kwargs,
|
3494
|
+
with_context: {
|
3495
|
+
token
|
3496
|
+
}
|
3497
|
+
};
|
3498
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3499
|
+
headers: {
|
3500
|
+
"Content-Type": "application/json"
|
3501
|
+
}
|
3502
|
+
});
|
3503
|
+
},
|
3504
|
+
async requestSetupTotp({ method, token }) {
|
3505
|
+
const env2 = getEnv();
|
3506
|
+
const jsonData = {
|
3507
|
+
method,
|
3508
|
+
with_context: {
|
3509
|
+
token
|
3510
|
+
}
|
3511
|
+
};
|
3512
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3513
|
+
headers: {
|
3514
|
+
"Content-Type": "application/json"
|
3515
|
+
}
|
3516
|
+
});
|
3517
|
+
},
|
3518
|
+
async verifyTotp({
|
3519
|
+
method,
|
3520
|
+
action_token,
|
3521
|
+
code
|
3522
|
+
}) {
|
3523
|
+
const env2 = getEnv();
|
3524
|
+
const jsonData = {
|
3525
|
+
method,
|
3526
|
+
kwargs: {
|
3527
|
+
vals: {
|
3528
|
+
code
|
3529
|
+
}
|
3530
|
+
},
|
3531
|
+
with_context: {
|
3532
|
+
action_token
|
3533
|
+
}
|
3534
|
+
};
|
3535
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3536
|
+
headers: {
|
3537
|
+
"Content-Type": "application/json"
|
3538
|
+
}
|
3539
|
+
});
|
3540
|
+
},
|
3541
|
+
async removeTotpSetUp({ method, token }) {
|
3542
|
+
const env2 = getEnv();
|
3543
|
+
const jsonData = {
|
3544
|
+
method,
|
3545
|
+
with_context: {
|
3546
|
+
token
|
3547
|
+
}
|
3548
|
+
};
|
3549
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3550
|
+
headers: {
|
3551
|
+
"Content-Type": "application/json"
|
3552
|
+
}
|
3553
|
+
});
|
3409
3554
|
}
|
3410
3555
|
};
|
3411
3556
|
var view_service_default = ViewService;
|
package/dist/provider.mjs
CHANGED
@@ -2761,6 +2761,27 @@ function matchDomain(record, domain) {
|
|
2761
2761
|
return matchCondition(record, condStack.pop());
|
2762
2762
|
}
|
2763
2763
|
|
2764
|
+
// src/utils/function.ts
|
2765
|
+
var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
|
2766
|
+
if (!originalRequest.data) return originalRequest.data;
|
2767
|
+
if (typeof originalRequest.data === "string") {
|
2768
|
+
try {
|
2769
|
+
const parsedData = JSON.parse(originalRequest.data);
|
2770
|
+
if (parsedData.with_context && typeof parsedData.with_context === "object") {
|
2771
|
+
parsedData.with_context.token = newAccessToken;
|
2772
|
+
}
|
2773
|
+
return JSON.stringify(parsedData);
|
2774
|
+
} catch (e) {
|
2775
|
+
console.warn("Failed to parse originalRequest.data", e);
|
2776
|
+
return originalRequest.data;
|
2777
|
+
}
|
2778
|
+
}
|
2779
|
+
if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
|
2780
|
+
originalRequest.data.with_context.token = newAccessToken;
|
2781
|
+
}
|
2782
|
+
return originalRequest.data;
|
2783
|
+
};
|
2784
|
+
|
2764
2785
|
// src/utils/storage/local-storage.ts
|
2765
2786
|
var localStorageUtils = () => {
|
2766
2787
|
const setToken = async (access_token) => {
|
@@ -2824,7 +2845,8 @@ var axiosClient = {
|
|
2824
2845
|
});
|
2825
2846
|
instance.interceptors.request.use(
|
2826
2847
|
async (config2) => {
|
2827
|
-
const
|
2848
|
+
const useRefreshToken = config2.useRefreshToken;
|
2849
|
+
const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
|
2828
2850
|
if (token) {
|
2829
2851
|
config2.headers["Authorization"] = "Bearer " + token;
|
2830
2852
|
}
|
@@ -2850,7 +2872,7 @@ var axiosClient = {
|
|
2850
2872
|
return data;
|
2851
2873
|
};
|
2852
2874
|
const originalRequest = error.config;
|
2853
|
-
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
|
2875
|
+
if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
|
2854
2876
|
error.response.data.code
|
2855
2877
|
)) {
|
2856
2878
|
if (isRefreshing) {
|
@@ -2858,6 +2880,10 @@ var axiosClient = {
|
|
2858
2880
|
failedQueue.push({ resolve, reject });
|
2859
2881
|
}).then((token) => {
|
2860
2882
|
originalRequest.headers["Authorization"] = "Bearer " + token;
|
2883
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2884
|
+
originalRequest,
|
2885
|
+
token
|
2886
|
+
);
|
2861
2887
|
return instance.request(originalRequest);
|
2862
2888
|
}).catch(async (err) => {
|
2863
2889
|
if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
|
@@ -2882,11 +2908,11 @@ var axiosClient = {
|
|
2882
2908
|
);
|
2883
2909
|
return new Promise(function(resolve) {
|
2884
2910
|
axios.post(
|
2885
|
-
`${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2911
|
+
`${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
|
2886
2912
|
payload,
|
2887
2913
|
{
|
2888
2914
|
headers: {
|
2889
|
-
"Content-Type": "multipart/form-data",
|
2915
|
+
"Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
|
2890
2916
|
Authorization: `Bearer ${accessTokenExp}`
|
2891
2917
|
}
|
2892
2918
|
}
|
@@ -2896,10 +2922,14 @@ var axiosClient = {
|
|
2896
2922
|
await localStorage2.setRefreshToken(data.refresh_token);
|
2897
2923
|
axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
|
2898
2924
|
originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
|
2925
|
+
originalRequest.data = updateTokenParamInOriginalRequest(
|
2926
|
+
originalRequest,
|
2927
|
+
data.access_token
|
2928
|
+
);
|
2899
2929
|
processQueue(null, data.access_token);
|
2900
2930
|
resolve(instance.request(originalRequest));
|
2901
2931
|
}).catch(async (err) => {
|
2902
|
-
if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
|
2932
|
+
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") {
|
2903
2933
|
await clearAuthToken();
|
2904
2934
|
}
|
2905
2935
|
if (err && err.response) {
|
@@ -2978,6 +3008,7 @@ var EnvStore = class {
|
|
2978
3008
|
db;
|
2979
3009
|
localStorageUtils;
|
2980
3010
|
sessionStorageUtils;
|
3011
|
+
refreshTokenEndpoint;
|
2981
3012
|
constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
|
2982
3013
|
this.envStore = envStore2;
|
2983
3014
|
this.localStorageUtils = localStorageUtils2;
|
@@ -2994,6 +3025,7 @@ var EnvStore = class {
|
|
2994
3025
|
this.companies = env2?.companies || [];
|
2995
3026
|
this.user = env2?.user;
|
2996
3027
|
this.db = env2?.db;
|
3028
|
+
this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
|
2997
3029
|
}
|
2998
3030
|
setupEnv(envConfig) {
|
2999
3031
|
const dispatch = this.envStore.dispatch;
|
@@ -3368,6 +3400,119 @@ var ViewService = {
|
|
3368
3400
|
"Content-Type": "application/json"
|
3369
3401
|
}
|
3370
3402
|
});
|
3403
|
+
},
|
3404
|
+
async grantAccess({
|
3405
|
+
redirect_uri,
|
3406
|
+
state,
|
3407
|
+
client_id,
|
3408
|
+
scopes
|
3409
|
+
}) {
|
3410
|
+
const env2 = getEnv();
|
3411
|
+
const jsonData = {
|
3412
|
+
redirect_uri,
|
3413
|
+
state,
|
3414
|
+
client_id,
|
3415
|
+
scopes
|
3416
|
+
};
|
3417
|
+
return env2?.requests.post("/grant-access" /* GRANT_ACCESS */, jsonData, {
|
3418
|
+
headers: {
|
3419
|
+
"Content-Type": "application/json"
|
3420
|
+
},
|
3421
|
+
withCredentials: true
|
3422
|
+
});
|
3423
|
+
},
|
3424
|
+
async getFieldsViewSecurity({
|
3425
|
+
method,
|
3426
|
+
token,
|
3427
|
+
views
|
3428
|
+
}) {
|
3429
|
+
const env2 = getEnv();
|
3430
|
+
const jsonData = {
|
3431
|
+
method,
|
3432
|
+
kwargs: {
|
3433
|
+
views
|
3434
|
+
},
|
3435
|
+
with_context: {
|
3436
|
+
token
|
3437
|
+
}
|
3438
|
+
};
|
3439
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3440
|
+
headers: {
|
3441
|
+
"Content-Type": "application/json"
|
3442
|
+
}
|
3443
|
+
});
|
3444
|
+
},
|
3445
|
+
async settingsWebRead2fa({
|
3446
|
+
method,
|
3447
|
+
model,
|
3448
|
+
kwargs,
|
3449
|
+
token
|
3450
|
+
}) {
|
3451
|
+
const env2 = getEnv();
|
3452
|
+
const jsonData = {
|
3453
|
+
method,
|
3454
|
+
model,
|
3455
|
+
kwargs,
|
3456
|
+
with_context: {
|
3457
|
+
token
|
3458
|
+
}
|
3459
|
+
};
|
3460
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3461
|
+
headers: {
|
3462
|
+
"Content-Type": "application/json"
|
3463
|
+
}
|
3464
|
+
});
|
3465
|
+
},
|
3466
|
+
async requestSetupTotp({ method, token }) {
|
3467
|
+
const env2 = getEnv();
|
3468
|
+
const jsonData = {
|
3469
|
+
method,
|
3470
|
+
with_context: {
|
3471
|
+
token
|
3472
|
+
}
|
3473
|
+
};
|
3474
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3475
|
+
headers: {
|
3476
|
+
"Content-Type": "application/json"
|
3477
|
+
}
|
3478
|
+
});
|
3479
|
+
},
|
3480
|
+
async verifyTotp({
|
3481
|
+
method,
|
3482
|
+
action_token,
|
3483
|
+
code
|
3484
|
+
}) {
|
3485
|
+
const env2 = getEnv();
|
3486
|
+
const jsonData = {
|
3487
|
+
method,
|
3488
|
+
kwargs: {
|
3489
|
+
vals: {
|
3490
|
+
code
|
3491
|
+
}
|
3492
|
+
},
|
3493
|
+
with_context: {
|
3494
|
+
action_token
|
3495
|
+
}
|
3496
|
+
};
|
3497
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3498
|
+
headers: {
|
3499
|
+
"Content-Type": "application/json"
|
3500
|
+
}
|
3501
|
+
});
|
3502
|
+
},
|
3503
|
+
async removeTotpSetUp({ method, token }) {
|
3504
|
+
const env2 = getEnv();
|
3505
|
+
const jsonData = {
|
3506
|
+
method,
|
3507
|
+
with_context: {
|
3508
|
+
token
|
3509
|
+
}
|
3510
|
+
};
|
3511
|
+
return env2?.requests.post("/call" /* CALL_PATH */, jsonData, {
|
3512
|
+
headers: {
|
3513
|
+
"Content-Type": "application/json"
|
3514
|
+
}
|
3515
|
+
});
|
3371
3516
|
}
|
3372
3517
|
};
|
3373
3518
|
var view_service_default = ViewService;
|