@fctc/interface-logic 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.js +34 -6
- package/dist/config.mjs +34 -6
- package/dist/constants.d.mts +4 -1
- package/dist/constants.d.ts +4 -1
- package/dist/constants.js +3 -0
- package/dist/constants.mjs +3 -0
- package/dist/environment.d.mts +1 -0
- package/dist/environment.d.ts +1 -0
- package/dist/environment.js +36 -6
- package/dist/environment.mjs +36 -6
- package/dist/hook.d.mts +46 -2
- package/dist/hook.d.ts +46 -2
- package/dist/hook.js +449 -116
- package/dist/hook.mjs +400 -75
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +454 -119
- package/dist/index.mjs +400 -74
- package/dist/model.js +41 -8
- package/dist/model.mjs +41 -8
- package/dist/provider.d.mts +4 -3
- package/dist/provider.d.ts +4 -3
- package/dist/provider.js +158 -10
- package/dist/provider.mjs +158 -10
- package/dist/services.d.mts +36 -2
- package/dist/services.d.ts +36 -2
- package/dist/services.js +195 -12
- package/dist/services.mjs +195 -12
- package/dist/utils.d.mts +4 -1
- package/dist/utils.d.ts +4 -1
- package/dist/utils.js +21 -0
- package/dist/utils.mjs +20 -0
- package/package.json +87 -87
package/dist/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
|
|
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,
|
|
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
|
|
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,
|
|
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: {
|
package/dist/constants.d.mts
CHANGED
|
@@ -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.d.ts
CHANGED
|
@@ -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
|
|
package/dist/constants.mjs
CHANGED
|
@@ -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
|
|
package/dist/environment.d.mts
CHANGED
|
@@ -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;
|
package/dist/environment.d.ts
CHANGED
|
@@ -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;
|
package/dist/environment.js
CHANGED
|
@@ -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
|
|
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,
|
|
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;
|
package/dist/environment.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
|
|
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,
|
|
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>;
|
|
@@ -186,7 +192,7 @@ declare const useSave: () => _tanstack_react_query.UseMutationResult<any, Error,
|
|
|
186
192
|
context: any;
|
|
187
193
|
}, unknown>;
|
|
188
194
|
|
|
189
|
-
declare const useGetProfile: () => _tanstack_react_query.UseMutationResult<any, Error, void, unknown>;
|
|
195
|
+
declare const useGetProfile: (path?: string) => _tanstack_react_query.UseMutationResult<any, Error, void, unknown>;
|
|
190
196
|
|
|
191
197
|
declare const useGetUser: () => _tanstack_react_query.UseMutationResult<any, Error, {
|
|
192
198
|
id: any;
|
|
@@ -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
|
-
|
|
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>;
|
|
@@ -186,7 +192,7 @@ declare const useSave: () => _tanstack_react_query.UseMutationResult<any, Error,
|
|
|
186
192
|
context: any;
|
|
187
193
|
}, unknown>;
|
|
188
194
|
|
|
189
|
-
declare const useGetProfile: () => _tanstack_react_query.UseMutationResult<any, Error, void, unknown>;
|
|
195
|
+
declare const useGetProfile: (path?: string) => _tanstack_react_query.UseMutationResult<any, Error, void, unknown>;
|
|
190
196
|
|
|
191
197
|
declare const useGetUser: () => _tanstack_react_query.UseMutationResult<any, Error, {
|
|
192
198
|
id: any;
|
|
@@ -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
|
-
|
|
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 };
|