@fctc/interface-logic 1.2.0 → 1.2.1

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 CHANGED
@@ -2148,6 +2148,25 @@ function matchDomain(record, domain) {
2148
2148
 
2149
2149
  // src/utils/function.ts
2150
2150
  var import_react = require("react");
2151
+ var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
2152
+ if (!originalRequest.data) return originalRequest.data;
2153
+ if (typeof originalRequest.data === "string") {
2154
+ try {
2155
+ const parsedData = JSON.parse(originalRequest.data);
2156
+ if (parsedData.with_context && typeof parsedData.with_context === "object") {
2157
+ parsedData.with_context.token = newAccessToken;
2158
+ }
2159
+ return JSON.stringify(parsedData);
2160
+ } catch (e) {
2161
+ console.warn("Failed to parse originalRequest.data", e);
2162
+ return originalRequest.data;
2163
+ }
2164
+ }
2165
+ if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
2166
+ originalRequest.data.with_context.token = newAccessToken;
2167
+ }
2168
+ return originalRequest.data;
2169
+ };
2151
2170
 
2152
2171
  // src/utils/storage/local-storage.ts
2153
2172
  var localStorageUtils = () => {
@@ -2212,7 +2231,8 @@ var axiosClient = {
2212
2231
  });
2213
2232
  instance.interceptors.request.use(
2214
2233
  async (config2) => {
2215
- const token = await localStorage2.getAccessToken();
2234
+ const useRefreshToken = config2.useRefreshToken;
2235
+ const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
2216
2236
  if (token) {
2217
2237
  config2.headers["Authorization"] = "Bearer " + token;
2218
2238
  }
@@ -2238,7 +2258,7 @@ var axiosClient = {
2238
2258
  return data;
2239
2259
  };
2240
2260
  const originalRequest = error.config;
2241
- if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
2261
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2242
2262
  error.response.data.code
2243
2263
  )) {
2244
2264
  if (isRefreshing) {
@@ -2246,6 +2266,10 @@ var axiosClient = {
2246
2266
  failedQueue.push({ resolve, reject });
2247
2267
  }).then((token) => {
2248
2268
  originalRequest.headers["Authorization"] = "Bearer " + token;
2269
+ originalRequest.data = updateTokenParamInOriginalRequest(
2270
+ originalRequest,
2271
+ token
2272
+ );
2249
2273
  return instance.request(originalRequest);
2250
2274
  }).catch(async (err) => {
2251
2275
  if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
@@ -2270,11 +2294,11 @@ var axiosClient = {
2270
2294
  );
2271
2295
  return new Promise(function(resolve) {
2272
2296
  import_axios.default.post(
2273
- `${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2297
+ `${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2274
2298
  payload,
2275
2299
  {
2276
2300
  headers: {
2277
- "Content-Type": "multipart/form-data",
2301
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2278
2302
  Authorization: `Bearer ${accessTokenExp}`
2279
2303
  }
2280
2304
  }
@@ -2284,10 +2308,14 @@ var axiosClient = {
2284
2308
  await localStorage2.setRefreshToken(data.refresh_token);
2285
2309
  import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2286
2310
  originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2311
+ originalRequest.data = updateTokenParamInOriginalRequest(
2312
+ originalRequest,
2313
+ data.access_token
2314
+ );
2287
2315
  processQueue(null, data.access_token);
2288
2316
  resolve(instance.request(originalRequest));
2289
2317
  }).catch(async (err) => {
2290
- if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
2318
+ 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") {
2291
2319
  await clearAuthToken();
2292
2320
  }
2293
2321
  if (err && err.response) {
@@ -2337,7 +2365,7 @@ var axiosClient = {
2337
2365
  const responseBody = (response) => response;
2338
2366
  const requests = {
2339
2367
  get: (url, headers) => instance.get(formatUrl(url, db), headers).then(responseBody),
2340
- post: (url, body, headers) => instance.post(formatUrl(url, db), body, { headers }).then(responseBody),
2368
+ post: (url, body, headers) => instance.post(formatUrl(url, db), body, headers).then(responseBody),
2341
2369
  post_excel: (url, body, headers) => instance.post(formatUrl(url, db), body, {
2342
2370
  responseType: "arraybuffer",
2343
2371
  headers: {
package/dist/config.mjs CHANGED
@@ -2112,6 +2112,25 @@ function matchDomain(record, domain) {
2112
2112
 
2113
2113
  // src/utils/function.ts
2114
2114
  import { useEffect, useState } from "react";
2115
+ var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
2116
+ if (!originalRequest.data) return originalRequest.data;
2117
+ if (typeof originalRequest.data === "string") {
2118
+ try {
2119
+ const parsedData = JSON.parse(originalRequest.data);
2120
+ if (parsedData.with_context && typeof parsedData.with_context === "object") {
2121
+ parsedData.with_context.token = newAccessToken;
2122
+ }
2123
+ return JSON.stringify(parsedData);
2124
+ } catch (e) {
2125
+ console.warn("Failed to parse originalRequest.data", e);
2126
+ return originalRequest.data;
2127
+ }
2128
+ }
2129
+ if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
2130
+ originalRequest.data.with_context.token = newAccessToken;
2131
+ }
2132
+ return originalRequest.data;
2133
+ };
2115
2134
 
2116
2135
  // src/utils/storage/local-storage.ts
2117
2136
  var localStorageUtils = () => {
@@ -2176,7 +2195,8 @@ var axiosClient = {
2176
2195
  });
2177
2196
  instance.interceptors.request.use(
2178
2197
  async (config2) => {
2179
- const token = await localStorage2.getAccessToken();
2198
+ const useRefreshToken = config2.useRefreshToken;
2199
+ const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
2180
2200
  if (token) {
2181
2201
  config2.headers["Authorization"] = "Bearer " + token;
2182
2202
  }
@@ -2202,7 +2222,7 @@ var axiosClient = {
2202
2222
  return data;
2203
2223
  };
2204
2224
  const originalRequest = error.config;
2205
- if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
2225
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2206
2226
  error.response.data.code
2207
2227
  )) {
2208
2228
  if (isRefreshing) {
@@ -2210,6 +2230,10 @@ var axiosClient = {
2210
2230
  failedQueue.push({ resolve, reject });
2211
2231
  }).then((token) => {
2212
2232
  originalRequest.headers["Authorization"] = "Bearer " + token;
2233
+ originalRequest.data = updateTokenParamInOriginalRequest(
2234
+ originalRequest,
2235
+ token
2236
+ );
2213
2237
  return instance.request(originalRequest);
2214
2238
  }).catch(async (err) => {
2215
2239
  if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
@@ -2234,11 +2258,11 @@ var axiosClient = {
2234
2258
  );
2235
2259
  return new Promise(function(resolve) {
2236
2260
  axios.post(
2237
- `${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2261
+ `${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2238
2262
  payload,
2239
2263
  {
2240
2264
  headers: {
2241
- "Content-Type": "multipart/form-data",
2265
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2242
2266
  Authorization: `Bearer ${accessTokenExp}`
2243
2267
  }
2244
2268
  }
@@ -2248,10 +2272,14 @@ var axiosClient = {
2248
2272
  await localStorage2.setRefreshToken(data.refresh_token);
2249
2273
  axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2250
2274
  originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2275
+ originalRequest.data = updateTokenParamInOriginalRequest(
2276
+ originalRequest,
2277
+ data.access_token
2278
+ );
2251
2279
  processQueue(null, data.access_token);
2252
2280
  resolve(instance.request(originalRequest));
2253
2281
  }).catch(async (err) => {
2254
- if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
2282
+ 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") {
2255
2283
  await clearAuthToken();
2256
2284
  }
2257
2285
  if (err && err.response) {
@@ -2301,7 +2329,7 @@ var axiosClient = {
2301
2329
  const responseBody = (response) => response;
2302
2330
  const requests = {
2303
2331
  get: (url, headers) => instance.get(formatUrl(url, db), headers).then(responseBody),
2304
- post: (url, body, headers) => instance.post(formatUrl(url, db), body, { headers }).then(responseBody),
2332
+ post: (url, body, headers) => instance.post(formatUrl(url, db), body, headers).then(responseBody),
2305
2333
  post_excel: (url, body, headers) => instance.post(formatUrl(url, db), body, {
2306
2334
  responseType: "arraybuffer",
2307
2335
  headers: {
@@ -45,7 +45,10 @@ declare enum UriConstants {
45
45
  TOKEN = "/check_token",
46
46
  CREATE_UPDATE_PATH = "/create_update",
47
47
  TWOFA_METHOD_PATH = "/id/api/v2/call",
48
- SIGNIN_SSO = "/signin-sso/oauth"
48
+ SIGNIN_SSO = "/signin-sso/oauth",
49
+ GRANT_ACCESS = "/grant-access",
50
+ TOKEN_BY_CODE = "/token",
51
+ LOGOUT = "/logout"
49
52
  }
50
53
 
51
54
  declare enum FieldTypeConstants {
@@ -45,7 +45,10 @@ declare enum UriConstants {
45
45
  TOKEN = "/check_token",
46
46
  CREATE_UPDATE_PATH = "/create_update",
47
47
  TWOFA_METHOD_PATH = "/id/api/v2/call",
48
- SIGNIN_SSO = "/signin-sso/oauth"
48
+ SIGNIN_SSO = "/signin-sso/oauth",
49
+ GRANT_ACCESS = "/grant-access",
50
+ TOKEN_BY_CODE = "/token",
51
+ LOGOUT = "/logout"
49
52
  }
50
53
 
51
54
  declare enum FieldTypeConstants {
package/dist/constants.js CHANGED
@@ -89,6 +89,9 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
89
89
  UriConstants2["CREATE_UPDATE_PATH"] = `/create_update`;
90
90
  UriConstants2["TWOFA_METHOD_PATH"] = `/id/api/v2/call`;
91
91
  UriConstants2["SIGNIN_SSO"] = `/signin-sso/oauth`;
92
+ UriConstants2["GRANT_ACCESS"] = "/grant-access";
93
+ UriConstants2["TOKEN_BY_CODE"] = "/token";
94
+ UriConstants2["LOGOUT"] = "/logout";
92
95
  return UriConstants2;
93
96
  })(UriConstants || {});
94
97
 
@@ -51,6 +51,9 @@ var UriConstants = /* @__PURE__ */ ((UriConstants2) => {
51
51
  UriConstants2["CREATE_UPDATE_PATH"] = `/create_update`;
52
52
  UriConstants2["TWOFA_METHOD_PATH"] = `/id/api/v2/call`;
53
53
  UriConstants2["SIGNIN_SSO"] = `/signin-sso/oauth`;
54
+ UriConstants2["GRANT_ACCESS"] = "/grant-access";
55
+ UriConstants2["TOKEN_BY_CODE"] = "/token";
56
+ UriConstants2["LOGOUT"] = "/logout";
54
57
  return UriConstants2;
55
58
  })(UriConstants || {});
56
59
 
@@ -21,6 +21,7 @@ declare class EnvStore {
21
21
  db?: string;
22
22
  localStorageUtils?: any;
23
23
  sessionStorageUtils?: any;
24
+ refreshTokenEndpoint?: string;
24
25
  constructor(envStore: EnhancedStore, localStorageUtils?: any, sessionStorageUtils?: any);
25
26
  setup(): void;
26
27
  setupEnv(envConfig: EnvStore): void;
@@ -21,6 +21,7 @@ declare class EnvStore {
21
21
  db?: string;
22
22
  localStorageUtils?: any;
23
23
  sessionStorageUtils?: any;
24
+ refreshTokenEndpoint?: string;
24
25
  constructor(envStore: EnhancedStore, localStorageUtils?: any, sessionStorageUtils?: any);
25
26
  setup(): void;
26
27
  setupEnv(envConfig: EnvStore): void;
@@ -2151,6 +2151,25 @@ function matchDomain(record, domain) {
2151
2151
 
2152
2152
  // src/utils/function.ts
2153
2153
  var import_react = require("react");
2154
+ var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
2155
+ if (!originalRequest.data) return originalRequest.data;
2156
+ if (typeof originalRequest.data === "string") {
2157
+ try {
2158
+ const parsedData = JSON.parse(originalRequest.data);
2159
+ if (parsedData.with_context && typeof parsedData.with_context === "object") {
2160
+ parsedData.with_context.token = newAccessToken;
2161
+ }
2162
+ return JSON.stringify(parsedData);
2163
+ } catch (e) {
2164
+ console.warn("Failed to parse originalRequest.data", e);
2165
+ return originalRequest.data;
2166
+ }
2167
+ }
2168
+ if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
2169
+ originalRequest.data.with_context.token = newAccessToken;
2170
+ }
2171
+ return originalRequest.data;
2172
+ };
2154
2173
 
2155
2174
  // src/utils/storage/local-storage.ts
2156
2175
  var localStorageUtils = () => {
@@ -2215,7 +2234,8 @@ var axiosClient = {
2215
2234
  });
2216
2235
  instance.interceptors.request.use(
2217
2236
  async (config2) => {
2218
- const token = await localStorage2.getAccessToken();
2237
+ const useRefreshToken = config2.useRefreshToken;
2238
+ const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
2219
2239
  if (token) {
2220
2240
  config2.headers["Authorization"] = "Bearer " + token;
2221
2241
  }
@@ -2241,7 +2261,7 @@ var axiosClient = {
2241
2261
  return data;
2242
2262
  };
2243
2263
  const originalRequest = error.config;
2244
- if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
2264
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2245
2265
  error.response.data.code
2246
2266
  )) {
2247
2267
  if (isRefreshing) {
@@ -2249,6 +2269,10 @@ var axiosClient = {
2249
2269
  failedQueue.push({ resolve, reject });
2250
2270
  }).then((token) => {
2251
2271
  originalRequest.headers["Authorization"] = "Bearer " + token;
2272
+ originalRequest.data = updateTokenParamInOriginalRequest(
2273
+ originalRequest,
2274
+ token
2275
+ );
2252
2276
  return instance.request(originalRequest);
2253
2277
  }).catch(async (err) => {
2254
2278
  if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
@@ -2273,11 +2297,11 @@ var axiosClient = {
2273
2297
  );
2274
2298
  return new Promise(function(resolve) {
2275
2299
  import_axios.default.post(
2276
- `${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2300
+ `${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2277
2301
  payload,
2278
2302
  {
2279
2303
  headers: {
2280
- "Content-Type": "multipart/form-data",
2304
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2281
2305
  Authorization: `Bearer ${accessTokenExp}`
2282
2306
  }
2283
2307
  }
@@ -2287,10 +2311,14 @@ var axiosClient = {
2287
2311
  await localStorage2.setRefreshToken(data.refresh_token);
2288
2312
  import_axios.default.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2289
2313
  originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2314
+ originalRequest.data = updateTokenParamInOriginalRequest(
2315
+ originalRequest,
2316
+ data.access_token
2317
+ );
2290
2318
  processQueue(null, data.access_token);
2291
2319
  resolve(instance.request(originalRequest));
2292
2320
  }).catch(async (err) => {
2293
- if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
2321
+ 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") {
2294
2322
  await clearAuthToken();
2295
2323
  }
2296
2324
  if (err && err.response) {
@@ -2340,7 +2368,7 @@ var axiosClient = {
2340
2368
  const responseBody = (response) => response;
2341
2369
  const requests = {
2342
2370
  get: (url, headers) => instance.get(formatUrl(url, db), headers).then(responseBody),
2343
- post: (url, body, headers) => instance.post(formatUrl(url, db), body, { headers }).then(responseBody),
2371
+ post: (url, body, headers) => instance.post(formatUrl(url, db), body, headers).then(responseBody),
2344
2372
  post_excel: (url, body, headers) => instance.post(formatUrl(url, db), body, {
2345
2373
  responseType: "arraybuffer",
2346
2374
  headers: {
@@ -2983,6 +3011,7 @@ var EnvStore = class {
2983
3011
  db;
2984
3012
  localStorageUtils;
2985
3013
  sessionStorageUtils;
3014
+ refreshTokenEndpoint;
2986
3015
  constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
2987
3016
  this.envStore = envStore2;
2988
3017
  this.localStorageUtils = localStorageUtils2;
@@ -2999,6 +3028,7 @@ var EnvStore = class {
2999
3028
  this.companies = env2?.companies || [];
3000
3029
  this.user = env2?.user;
3001
3030
  this.db = env2?.db;
3031
+ this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
3002
3032
  }
3003
3033
  setupEnv(envConfig) {
3004
3034
  const dispatch = this.envStore.dispatch;
@@ -2112,6 +2112,25 @@ function matchDomain(record, domain) {
2112
2112
 
2113
2113
  // src/utils/function.ts
2114
2114
  import { useEffect, useState } from "react";
2115
+ var updateTokenParamInOriginalRequest = (originalRequest, newAccessToken) => {
2116
+ if (!originalRequest.data) return originalRequest.data;
2117
+ if (typeof originalRequest.data === "string") {
2118
+ try {
2119
+ const parsedData = JSON.parse(originalRequest.data);
2120
+ if (parsedData.with_context && typeof parsedData.with_context === "object") {
2121
+ parsedData.with_context.token = newAccessToken;
2122
+ }
2123
+ return JSON.stringify(parsedData);
2124
+ } catch (e) {
2125
+ console.warn("Failed to parse originalRequest.data", e);
2126
+ return originalRequest.data;
2127
+ }
2128
+ }
2129
+ if (typeof originalRequest.data === "object" && originalRequest.data.with_context) {
2130
+ originalRequest.data.with_context.token = newAccessToken;
2131
+ }
2132
+ return originalRequest.data;
2133
+ };
2115
2134
 
2116
2135
  // src/utils/storage/local-storage.ts
2117
2136
  var localStorageUtils = () => {
@@ -2176,7 +2195,8 @@ var axiosClient = {
2176
2195
  });
2177
2196
  instance.interceptors.request.use(
2178
2197
  async (config2) => {
2179
- const token = await localStorage2.getAccessToken();
2198
+ const useRefreshToken = config2.useRefreshToken;
2199
+ const token = useRefreshToken ? await localStorage2.getRefreshToken() : await localStorage2.getAccessToken();
2180
2200
  if (token) {
2181
2201
  config2.headers["Authorization"] = "Bearer " + token;
2182
2202
  }
@@ -2202,7 +2222,7 @@ var axiosClient = {
2202
2222
  return data;
2203
2223
  };
2204
2224
  const originalRequest = error.config;
2205
- if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401].includes(
2225
+ if ((error.response?.status === 403 || error.response?.status === 401 || error.response?.status === 404) && ["TOKEN_EXPIRED", "AUTHEN_FAIL", 401, "ERR_2FA_006"].includes(
2206
2226
  error.response.data.code
2207
2227
  )) {
2208
2228
  if (isRefreshing) {
@@ -2210,6 +2230,10 @@ var axiosClient = {
2210
2230
  failedQueue.push({ resolve, reject });
2211
2231
  }).then((token) => {
2212
2232
  originalRequest.headers["Authorization"] = "Bearer " + token;
2233
+ originalRequest.data = updateTokenParamInOriginalRequest(
2234
+ originalRequest,
2235
+ token
2236
+ );
2213
2237
  return instance.request(originalRequest);
2214
2238
  }).catch(async (err) => {
2215
2239
  if ((err.response?.status === 400 || err.response?.status === 401) && ["invalid_grant"].includes(err.response.data.error)) {
@@ -2234,11 +2258,11 @@ var axiosClient = {
2234
2258
  );
2235
2259
  return new Promise(function(resolve) {
2236
2260
  axios.post(
2237
- `${config.baseUrl}${"/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2261
+ `${config.baseUrl}${config.refreshTokenEndpoint ?? "/authentication/oauth2/token" /* AUTH_TOKEN_PATH */}`,
2238
2262
  payload,
2239
2263
  {
2240
2264
  headers: {
2241
- "Content-Type": "multipart/form-data",
2265
+ "Content-Type": config.refreshTokenEndpoint ? "application/x-www-form-urlencoded" : "multipart/form-data",
2242
2266
  Authorization: `Bearer ${accessTokenExp}`
2243
2267
  }
2244
2268
  }
@@ -2248,10 +2272,14 @@ var axiosClient = {
2248
2272
  await localStorage2.setRefreshToken(data.refresh_token);
2249
2273
  axios.defaults.headers.common["Authorization"] = "Bearer " + data.access_token;
2250
2274
  originalRequest.headers["Authorization"] = "Bearer " + data.access_token;
2275
+ originalRequest.data = updateTokenParamInOriginalRequest(
2276
+ originalRequest,
2277
+ data.access_token
2278
+ );
2251
2279
  processQueue(null, data.access_token);
2252
2280
  resolve(instance.request(originalRequest));
2253
2281
  }).catch(async (err) => {
2254
- if (err && (err?.error_code === "AUTHEN_FAIL" || err?.error_code === "TOKEN_EXPIRED" || err?.error_code === "TOKEN_INCORRECT" || err?.code === "ERR_BAD_REQUEST")) {
2282
+ 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") {
2255
2283
  await clearAuthToken();
2256
2284
  }
2257
2285
  if (err && err.response) {
@@ -2301,7 +2329,7 @@ var axiosClient = {
2301
2329
  const responseBody = (response) => response;
2302
2330
  const requests = {
2303
2331
  get: (url, headers) => instance.get(formatUrl(url, db), headers).then(responseBody),
2304
- post: (url, body, headers) => instance.post(formatUrl(url, db), body, { headers }).then(responseBody),
2332
+ post: (url, body, headers) => instance.post(formatUrl(url, db), body, headers).then(responseBody),
2305
2333
  post_excel: (url, body, headers) => instance.post(formatUrl(url, db), body, {
2306
2334
  responseType: "arraybuffer",
2307
2335
  headers: {
@@ -2944,6 +2972,7 @@ var EnvStore = class {
2944
2972
  db;
2945
2973
  localStorageUtils;
2946
2974
  sessionStorageUtils;
2975
+ refreshTokenEndpoint;
2947
2976
  constructor(envStore2, localStorageUtils2, sessionStorageUtils2) {
2948
2977
  this.envStore = envStore2;
2949
2978
  this.localStorageUtils = localStorageUtils2;
@@ -2960,6 +2989,7 @@ var EnvStore = class {
2960
2989
  this.companies = env2?.companies || [];
2961
2990
  this.user = env2?.user;
2962
2991
  this.db = env2?.db;
2992
+ this.refreshTokenEndpoint = env2?.refreshTokenEndpoint;
2963
2993
  }
2964
2994
  setupEnv(envConfig) {
2965
2995
  const dispatch = this.envStore.dispatch;
package/dist/hook.d.mts CHANGED
@@ -36,6 +36,12 @@ declare const useResetPasswordSSO: () => _tanstack_react_query.UseMutationResult
36
36
 
37
37
  declare const useUpdatePassword: () => _tanstack_react_query.UseMutationResult<any, Error, updatePasswordBody, unknown>;
38
38
 
39
+ declare const useLogout: () => _tanstack_react_query.UseMutationResult<any, Error, string, unknown>;
40
+
41
+ declare const useGetAccessByCode: () => _tanstack_react_query.UseMutationResult<any, Error, {
42
+ code: string;
43
+ }, unknown>;
44
+
39
45
  declare const useGetCompanyInfo: () => _tanstack_react_query.UseMutationResult<any, Error, number, unknown>;
40
46
 
41
47
  declare const useGetCurrentCompany: () => _tanstack_react_query.UseMutationResult<any, Error, void, unknown>;
@@ -285,6 +291,8 @@ declare const useVerify2FA: () => _tanstack_react_query.UseMutationResult<any, E
285
291
  method: string;
286
292
  with_context: any;
287
293
  code: string;
294
+ device: string;
295
+ location: string;
288
296
  }, unknown>;
289
297
 
290
298
  declare const useGet2FAMethods: () => _tanstack_react_query.UseMutationResult<any, Error, {
@@ -292,4 +300,40 @@ declare const useGet2FAMethods: () => _tanstack_react_query.UseMutationResult<an
292
300
  with_context: any;
293
301
  }, unknown>;
294
302
 
295
- export { useButton, useChangeStatus, useDelete, useDeleteComment, useDuplicateRecord, useExecuteImport, useExportExcel, useForgotPassword, useForgotPasswordSSO, useGet2FAMethods, useGetActionDetail, useGetAll, useGetCalendar, useGetComment, useGetCompanyInfo, useGetConversionRate, useGetCurrency, useGetCurrentCompany, useGetDetail, useGetFieldExport, useGetFieldOnChange, useGetFileExcel, useGetFormView, useGetGroups, useGetImage, useGetListCompany, useGetListData, useGetListMyBankAccount, useGetMenu, useGetPrintReport, useGetProGressBar, useGetProfile, useGetProvider, useGetResequence, useGetUser, useGetView, useIsValidToken, useLoadAction, useLoadMessage, useLoginCredential, useLoginSocial, useModel, useOdooDataTransform, useOnChangeForm, useParsePreview, usePrint, useRemoveRow, useResetPassword, useResetPasswordSSO, useRunAction, useSave, useSendComment, useSignInSSO, useSwitchLocale, useUpdatePassword, useUploadFile, useUploadIdFile, useUploadImage, useVerify2FA };
303
+ declare const useGetFieldsViewSecurity: () => _tanstack_react_query.UseMutationResult<any, Error, {
304
+ method: string;
305
+ token: string;
306
+ views: any;
307
+ }, unknown>;
308
+
309
+ declare const useGrantAccess: () => _tanstack_react_query.UseMutationResult<any, Error, {
310
+ redirect_uri: string;
311
+ state: string;
312
+ client_id: string;
313
+ scopes: string[];
314
+ }, unknown>;
315
+
316
+ declare const useRemoveTotpSetup: () => _tanstack_react_query.UseMutationResult<any, Error, {
317
+ method: string;
318
+ token: string;
319
+ }, unknown>;
320
+
321
+ declare const useRequestSetupTotp: () => _tanstack_react_query.UseMutationResult<any, Error, {
322
+ method: string;
323
+ token: string;
324
+ }, unknown>;
325
+
326
+ declare const useSettingsWebRead2fa: () => _tanstack_react_query.UseMutationResult<any, Error, {
327
+ method: string;
328
+ model: string;
329
+ kwargs: any;
330
+ token: string;
331
+ }, unknown>;
332
+
333
+ declare const useVerifyTotp: () => _tanstack_react_query.UseMutationResult<any, Error, {
334
+ method: string;
335
+ action_token: string;
336
+ code: string;
337
+ }, unknown>;
338
+
339
+ export { useButton, useChangeStatus, useDelete, useDeleteComment, useDuplicateRecord, useExecuteImport, useExportExcel, useForgotPassword, useForgotPasswordSSO, useGet2FAMethods, useGetAccessByCode, useGetActionDetail, useGetAll, useGetCalendar, useGetComment, useGetCompanyInfo, useGetConversionRate, useGetCurrency, useGetCurrentCompany, useGetDetail, useGetFieldExport, useGetFieldOnChange, useGetFieldsViewSecurity, useGetFileExcel, useGetFormView, useGetGroups, useGetImage, useGetListCompany, useGetListData, useGetListMyBankAccount, useGetMenu, useGetPrintReport, useGetProGressBar, useGetProfile, useGetProvider, useGetResequence, useGetUser, useGetView, useGrantAccess, useIsValidToken, useLoadAction, useLoadMessage, useLoginCredential, useLoginSocial, useLogout, useModel, useOdooDataTransform, useOnChangeForm, useParsePreview, usePrint, useRemoveRow, useRemoveTotpSetup, useRequestSetupTotp, useResetPassword, useResetPasswordSSO, useRunAction, useSave, useSendComment, useSettingsWebRead2fa, useSignInSSO, useSwitchLocale, useUpdatePassword, useUploadFile, useUploadIdFile, useUploadImage, useVerify2FA, useVerifyTotp };
package/dist/hook.d.ts CHANGED
@@ -36,6 +36,12 @@ declare const useResetPasswordSSO: () => _tanstack_react_query.UseMutationResult
36
36
 
37
37
  declare const useUpdatePassword: () => _tanstack_react_query.UseMutationResult<any, Error, updatePasswordBody, unknown>;
38
38
 
39
+ declare const useLogout: () => _tanstack_react_query.UseMutationResult<any, Error, string, unknown>;
40
+
41
+ declare const useGetAccessByCode: () => _tanstack_react_query.UseMutationResult<any, Error, {
42
+ code: string;
43
+ }, unknown>;
44
+
39
45
  declare const useGetCompanyInfo: () => _tanstack_react_query.UseMutationResult<any, Error, number, unknown>;
40
46
 
41
47
  declare const useGetCurrentCompany: () => _tanstack_react_query.UseMutationResult<any, Error, void, unknown>;
@@ -285,6 +291,8 @@ declare const useVerify2FA: () => _tanstack_react_query.UseMutationResult<any, E
285
291
  method: string;
286
292
  with_context: any;
287
293
  code: string;
294
+ device: string;
295
+ location: string;
288
296
  }, unknown>;
289
297
 
290
298
  declare const useGet2FAMethods: () => _tanstack_react_query.UseMutationResult<any, Error, {
@@ -292,4 +300,40 @@ declare const useGet2FAMethods: () => _tanstack_react_query.UseMutationResult<an
292
300
  with_context: any;
293
301
  }, unknown>;
294
302
 
295
- export { useButton, useChangeStatus, useDelete, useDeleteComment, useDuplicateRecord, useExecuteImport, useExportExcel, useForgotPassword, useForgotPasswordSSO, useGet2FAMethods, useGetActionDetail, useGetAll, useGetCalendar, useGetComment, useGetCompanyInfo, useGetConversionRate, useGetCurrency, useGetCurrentCompany, useGetDetail, useGetFieldExport, useGetFieldOnChange, useGetFileExcel, useGetFormView, useGetGroups, useGetImage, useGetListCompany, useGetListData, useGetListMyBankAccount, useGetMenu, useGetPrintReport, useGetProGressBar, useGetProfile, useGetProvider, useGetResequence, useGetUser, useGetView, useIsValidToken, useLoadAction, useLoadMessage, useLoginCredential, useLoginSocial, useModel, useOdooDataTransform, useOnChangeForm, useParsePreview, usePrint, useRemoveRow, useResetPassword, useResetPasswordSSO, useRunAction, useSave, useSendComment, useSignInSSO, useSwitchLocale, useUpdatePassword, useUploadFile, useUploadIdFile, useUploadImage, useVerify2FA };
303
+ declare const useGetFieldsViewSecurity: () => _tanstack_react_query.UseMutationResult<any, Error, {
304
+ method: string;
305
+ token: string;
306
+ views: any;
307
+ }, unknown>;
308
+
309
+ declare const useGrantAccess: () => _tanstack_react_query.UseMutationResult<any, Error, {
310
+ redirect_uri: string;
311
+ state: string;
312
+ client_id: string;
313
+ scopes: string[];
314
+ }, unknown>;
315
+
316
+ declare const useRemoveTotpSetup: () => _tanstack_react_query.UseMutationResult<any, Error, {
317
+ method: string;
318
+ token: string;
319
+ }, unknown>;
320
+
321
+ declare const useRequestSetupTotp: () => _tanstack_react_query.UseMutationResult<any, Error, {
322
+ method: string;
323
+ token: string;
324
+ }, unknown>;
325
+
326
+ declare const useSettingsWebRead2fa: () => _tanstack_react_query.UseMutationResult<any, Error, {
327
+ method: string;
328
+ model: string;
329
+ kwargs: any;
330
+ token: string;
331
+ }, unknown>;
332
+
333
+ declare const useVerifyTotp: () => _tanstack_react_query.UseMutationResult<any, Error, {
334
+ method: string;
335
+ action_token: string;
336
+ code: string;
337
+ }, unknown>;
338
+
339
+ export { useButton, useChangeStatus, useDelete, useDeleteComment, useDuplicateRecord, useExecuteImport, useExportExcel, useForgotPassword, useForgotPasswordSSO, useGet2FAMethods, useGetAccessByCode, useGetActionDetail, useGetAll, useGetCalendar, useGetComment, useGetCompanyInfo, useGetConversionRate, useGetCurrency, useGetCurrentCompany, useGetDetail, useGetFieldExport, useGetFieldOnChange, useGetFieldsViewSecurity, useGetFileExcel, useGetFormView, useGetGroups, useGetImage, useGetListCompany, useGetListData, useGetListMyBankAccount, useGetMenu, useGetPrintReport, useGetProGressBar, useGetProfile, useGetProvider, useGetResequence, useGetUser, useGetView, useGrantAccess, useIsValidToken, useLoadAction, useLoadMessage, useLoginCredential, useLoginSocial, useLogout, useModel, useOdooDataTransform, useOnChangeForm, useParsePreview, usePrint, useRemoveRow, useRemoveTotpSetup, useRequestSetupTotp, useResetPassword, useResetPasswordSSO, useRunAction, useSave, useSendComment, useSettingsWebRead2fa, useSignInSSO, useSwitchLocale, useUpdatePassword, useUploadFile, useUploadIdFile, useUploadImage, useVerify2FA, useVerifyTotp };