@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/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 token = await localStorage2.getAccessToken();
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 token = await localStorage2.getAccessToken();
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 token = await localStorage2.getAccessToken();
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 token = await localStorage2.getAccessToken();
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;