phx-uikit 1.0.225 → 1.0.227

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.
@@ -1,24 +1,23 @@
1
1
  "use strict";
2
- // axios.ts
3
2
  exports.__esModule = true;
4
3
  exports.PHXAxiosInstance = void 0;
5
4
  var tslib_1 = require("tslib");
6
5
  var axios_1 = tslib_1.__importDefault(require("axios"));
6
+ var async_lock_1 = tslib_1.__importDefault(require("async-lock"));
7
7
  var read_env_config_1 = require("./read-env-config");
8
8
  var constants_1 = require("./utils/constants");
9
9
  var saveCookiesClient_1 = tslib_1.__importDefault(require("./components/Func/saveCookiesClient"));
10
10
  var getCookieSession_1 = tslib_1.__importDefault(require("./components/Func/getCookieSession"));
11
11
  var headers_1 = require("next/headers");
12
- // 2) Biến toàn cục giữ promise đang chờ của /refresh-token
13
- var refreshTokenPromise = null;
12
+ var lock = new async_lock_1["default"]();
14
13
  var publicUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
15
- // const internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL)
14
+ var internalUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
16
15
  var isServer = typeof window === 'undefined';
17
16
  var PHXAxiosInstance = axios_1["default"].create({
18
17
  baseURL: publicUrl
19
18
  });
20
19
  exports.PHXAxiosInstance = PHXAxiosInstance;
21
- // Lấy đủ headers (cookie + origin) khi SSR
20
+ // Lấy header (cookie + origin) khi chạy SSR
22
21
  var getAuthHeaders = function () {
23
22
  if (!isServer)
24
23
  return {};
@@ -35,10 +34,10 @@ var getAuthHeaders = function () {
35
34
  hostname: (0, headers_1.headers)().get('origin') || undefined
36
35
  };
37
36
  };
38
- // Lưu refresh_token vào cookie SSR
39
- var saveRefreshTokenServer = function (res) {
37
+ // Lưu lại refresh token từ header của response (chỉ SSR)
38
+ var saveRefreshTokenServer = function (response) {
40
39
  var _a;
41
- var setCookieHeader = ((_a = res.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
40
+ var setCookieHeader = ((_a = response.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
42
41
  var match = setCookieHeader.match(/refresh_token=([^;]+)/);
43
42
  var refreshToken = (match === null || match === void 0 ? void 0 : match[1]) || '';
44
43
  (0, headers_1.cookies)().set(constants_1.COOKIE_REFRESH_TOKEN, refreshToken, {
@@ -49,65 +48,100 @@ var saveRefreshTokenServer = function (res) {
49
48
  expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
50
49
  });
51
50
  };
52
- // Hàm refresh-token với promise-caching
51
+ // Gọi API refresh-token, đồng bộ hoá với AsyncLock
53
52
  var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
54
53
  return tslib_1.__generator(this, function (_a) {
55
- if (refreshTokenPromise) {
56
- // Nếu đang 1 lần gọi chưa xong, chờ nó và return kết quả
57
- return [2 /*return*/, refreshTokenPromise];
58
- }
59
- refreshTokenPromise = (function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
60
- var url, response, newToken, updatedSession, err_1;
61
- return tslib_1.__generator(this, function (_a) {
62
- switch (_a.label) {
63
- case 0:
64
- _a.trys.push([0, 2, 3, 4]);
65
- url = "".concat(isServer ? (0, headers_1.headers)().get('origin') : '', "/api/authenticate/refresh-token");
66
- return [4 /*yield*/, axios_1["default"].post(url, {}, { headers: getAuthHeaders() })];
67
- case 1:
68
- response = _a.sent();
69
- newToken = response.data.token;
70
- updatedSession = (0, getCookieSession_1["default"])();
71
- (0, saveCookiesClient_1["default"])({ value: tslib_1.__assign(tslib_1.__assign({}, updatedSession), { access_token: newToken }) });
72
- // Lưu refresh_token SSR nếu cần
73
- if (isServer)
74
- saveRefreshTokenServer(response);
75
- return [2 /*return*/, newToken];
76
- case 2:
77
- err_1 = _a.sent();
78
- if (!isServer)
79
- window.location.href = constants_1.loginPage;
80
- throw err_1;
81
- case 3:
82
- // Clear để lần sau có thể gọi lại khi token expire thêm
83
- refreshTokenPromise = null;
84
- return [7 /*endfinally*/];
85
- case 4: return [2 /*return*/];
86
- }
87
- });
88
- }); })();
89
- return [2 /*return*/, refreshTokenPromise];
54
+ return [2 /*return*/, lock.acquire('refresh_token', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
55
+ var currentSession, existing, url, response, newToken, updatedSession, err_1;
56
+ return tslib_1.__generator(this, function (_a) {
57
+ switch (_a.label) {
58
+ case 0:
59
+ currentSession = (0, getCookieSession_1["default"])();
60
+ existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
61
+ console.log('existing', existing);
62
+ if (existing)
63
+ return [2 /*return*/, existing
64
+ // Thực sự gọi API refresh
65
+ ];
66
+ _a.label = 1;
67
+ case 1:
68
+ _a.trys.push([1, 3, , 4]);
69
+ url = "".concat(isServer ? (0, headers_1.headers)().get('origin') : '', "/api/authenticate/refresh-token");
70
+ return [4 /*yield*/, axios_1["default"].post(url, {}, { headers: getAuthHeaders() })];
71
+ case 2:
72
+ response = _a.sent();
73
+ newToken = response.data.token;
74
+ updatedSession = (0, getCookieSession_1["default"])();
75
+ (0, saveCookiesClient_1["default"])({
76
+ value: tslib_1.__assign(tslib_1.__assign({}, updatedSession), { access_token: newToken })
77
+ });
78
+ // Lưu refresh token SSR nếu cần
79
+ if (isServer)
80
+ saveRefreshTokenServer(response);
81
+ return [2 /*return*/, newToken];
82
+ case 3:
83
+ err_1 = _a.sent();
84
+ if (!isServer) {
85
+ window.location.href = constants_1.loginPage;
86
+ }
87
+ throw err_1;
88
+ case 4: return [2 /*return*/];
89
+ }
90
+ });
91
+ }); })];
90
92
  });
91
93
  }); };
92
- // --- CHỈ request interceptor: chỉ add header, không catch 401 ---
93
- PHXAxiosInstance.interceptors.request.use(function (config) {
94
- var session = (0, getCookieSession_1["default"])();
95
- var token = session === null || session === void 0 ? void 0 : session.access_token;
96
- if (token) {
97
- config.headers = config.headers || {};
98
- config.headers.Authorization = "Bearer ".concat(token);
99
- }
100
- return config;
101
- });
102
- // --- Response interceptor: bắt 401, refresh, retry với token mới ---
94
+ // Request interceptor: luôn thêm Authorization nếu access_token
95
+ PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
96
+ var session, token, err_2, fresh;
97
+ var _a;
98
+ return tslib_1.__generator(this, function (_b) {
99
+ switch (_b.label) {
100
+ case 0:
101
+ session = (0, getCookieSession_1["default"])();
102
+ token = session === null || session === void 0 ? void 0 : session.access_token;
103
+ if (!token) return [3 /*break*/, 7];
104
+ config.headers = config.headers || {};
105
+ config.headers.Authorization = "Bearer ".concat(token);
106
+ if (!isServer) return [3 /*break*/, 7];
107
+ _b.label = 1;
108
+ case 1:
109
+ _b.trys.push([1, 3, , 7]);
110
+ return [4 /*yield*/, axios_1["default"].post("".concat(internalUrl, "/authen/authenticate"), {}, { headers: tslib_1.__assign({ Authorization: "Bearer ".concat(token) }, getAuthHeaders()) })];
111
+ case 2:
112
+ _b.sent();
113
+ return [3 /*break*/, 7];
114
+ case 3:
115
+ err_2 = _b.sent();
116
+ if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
117
+ (0, saveCookiesClient_1["default"])({
118
+ value: tslib_1.__assign(tslib_1.__assign({}, session), { access_token: '' })
119
+ });
120
+ return [4 /*yield*/, refreshAccessToken()];
121
+ case 4:
122
+ fresh = _b.sent();
123
+ config.headers.Authorization = "Bearer ".concat(fresh);
124
+ return [3 /*break*/, 6];
125
+ case 5: throw err_2;
126
+ case 6: return [3 /*break*/, 7];
127
+ case 7: return [2 /*return*/, config];
128
+ }
129
+ });
130
+ }); });
131
+ // Response interceptor: bắt 401, gọi refresh và retry
103
132
  PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
104
- var originalRequest, newToken, e_1;
133
+ var originalRequest, session, newToken, e_1;
105
134
  var _a;
106
135
  return tslib_1.__generator(this, function (_b) {
107
136
  switch (_b.label) {
108
137
  case 0:
138
+ console.log('errorerror', error);
109
139
  originalRequest = error.config;
110
140
  if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
141
+ session = (0, getCookieSession_1["default"])();
142
+ (0, saveCookiesClient_1["default"])({
143
+ value: tslib_1.__assign(tslib_1.__assign({}, session), { access_token: '' })
144
+ });
111
145
  originalRequest._retry = true;
112
146
  _b.label = 1;
113
147
  case 1:
@@ -1 +1 @@
1
- {"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":";AAAA,WAAW;;;;AAEX,wDAAgE;AAChE,qDAA0C;AAC1C,+CAAmE;AACnE,kGAAmE;AACnE,gGAAwE;AACxE,wCAA+C;AAS/C,2DAA2D;AAC3D,IAAI,mBAAmB,GAA2B,IAAI,CAAA;AAEtD,IAAM,SAAS,GAAG,IAAA,wBAAM,EAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACxF,+GAA+G;AAE/G,IAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;AAE9C,IAAM,gBAAgB,GAAG,kBAAK,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,SAAS;CACnB,CAAC,CAAA;AAgGO,4CAAgB;AA9FzB,2CAA2C;AAC3C,IAAM,cAAc,GAAG;IACrB,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IACxB,IAAM,WAAW,GAAG,IAAA,iBAAO,GAAE,CAAA;IAC7B,IAAM,YAAY,GAAG,WAAW;SAC7B,MAAM,EAAE;SACR,GAAG,CAAC,UAAC,EAAe;YAAb,IAAI,UAAA,EAAE,KAAK,WAAA;QAAO,OAAA,UAAG,IAAI,cAAI,KAAK,CAAE;IAAlB,CAAkB,CAAC;SAC5C,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,IAAA,iBAAO,GAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS;KAC/C,CAAA;AACH,CAAC,CAAA;AAED,mCAAmC;AACnC,IAAM,sBAAsB,GAAG,UAAC,GAAkB;;IAChD,IAAM,eAAe,GAAG,CAAA,MAAA,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAA;IAC5D,IAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAC5D,IAAM,YAAY,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,KAAI,EAAE,CAAA;IACrC,IAAA,iBAAO,GAAE,CAAC,GAAG,CAAC,gCAAoB,EAAE,YAAY,EAAE;QAChD,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,wCAAwC;AACxC,IAAM,kBAAkB,GAAG;;QACzB,IAAI,mBAAmB,EAAE;YACvB,4DAA4D;YAC5D,sBAAO,mBAAmB,EAAA;SAC3B;QAED,mBAAmB,GAAG,CAAC;;;;;;wBAEb,GAAG,GAAG,UAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,iBAAO,GAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,oCAAiC,CAAA;wBACtE,qBAAM,kBAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,EAAA;;wBAAnE,QAAQ,GAAG,SAAwD;wBACnE,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAe,CAAA;wBAGxC,cAAc,GAAG,IAAA,6BAAuB,GAAE,CAAA;wBAChD,IAAA,8BAAiB,EAAC,EAAE,KAAK,wCAAO,cAAc,KAAE,YAAY,EAAE,QAAQ,GAAE,EAAE,CAAC,CAAA;wBAE3E,gCAAgC;wBAChC,IAAI,QAAQ;4BAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;wBAE9C,sBAAO,QAAQ,EAAA;;;wBAEf,IAAI,CAAC,QAAQ;4BAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,qBAAS,CAAA;wBAC/C,MAAM,KAAG,CAAA;;wBAET,wDAAwD;wBACxD,mBAAmB,GAAG,IAAI,CAAA;;;;;aAE7B,CAAC,EAAE,CAAA;QAEJ,sBAAO,mBAAmB,EAAA;;KAC3B,CAAA;AAED,mEAAmE;AACnE,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;IAC/C,IAAM,OAAO,GAAG,IAAA,6BAAuB,GAAE,CAAA;IACzC,IAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAA;IACnC,IAAI,KAAK,EAAE;QACT,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;QACrC,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,iBAAU,KAAK,CAAE,CAAA;KACjD;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA;AAEF,sEAAsE;AACtE,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACxC,UAAC,GAAG,IAAK,OAAA,GAAG,EAAH,CAAG,EACZ,UAAO,KAAK;;;;;;gBACJ,eAAe,GAAG,KAAK,CAAC,MAA4B,CAAA;qBAEtD,CAAA,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA,EAAzD,wBAAyD;gBAC3D,eAAe,CAAC,MAAM,GAAG,IAAI,CAAA;;;;gBAEV,qBAAM,kBAAkB,EAAE,EAAA;;gBAArC,QAAQ,GAAG,SAA0B;gBAC3C,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,EAAE,CAAA;gBACvD,eAAe,CAAC,OAAO,CAAC,aAAa,GAAG,iBAAU,QAAQ,CAAE,CAAA;gBAC5D,sBAAO,gBAAgB,CAAC,eAAsB,CAAC,EAAA;;;gBAE/C,sBAAO,OAAO,CAAC,MAAM,CAAC,GAAC,CAAC,EAAA;oBAI5B,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;;KAC7B,CACF,CAAA"}
1
+ {"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,19 @@
1
- // axios.ts
2
1
  import { __assign, __awaiter, __generator } from "tslib";
3
2
  import axios from 'axios';
3
+ import AsyncLock from 'async-lock';
4
4
  import { getEnv } from './read-env-config';
5
5
  import { COOKIE_REFRESH_TOKEN, loginPage } from './utils/constants';
6
6
  import saveCookiesClient from './components/Func/saveCookiesClient';
7
7
  import PHXFuncGetCookieSession from './components/Func/getCookieSession';
8
8
  import { cookies, headers } from 'next/headers';
9
- // 2) Biến toàn cục giữ promise đang chờ của /refresh-token
10
- var refreshTokenPromise = null;
9
+ var lock = new AsyncLock();
11
10
  var publicUrl = getEnv('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
12
- // const internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL)
11
+ var internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
13
12
  var isServer = typeof window === 'undefined';
14
13
  var PHXAxiosInstance = axios.create({
15
14
  baseURL: publicUrl
16
15
  });
17
- // Lấy đủ headers (cookie + origin) khi SSR
16
+ // Lấy header (cookie + origin) khi chạy SSR
18
17
  var getAuthHeaders = function () {
19
18
  if (!isServer)
20
19
  return {};
@@ -31,10 +30,10 @@ var getAuthHeaders = function () {
31
30
  hostname: headers().get('origin') || undefined
32
31
  };
33
32
  };
34
- // Lưu refresh_token vào cookie SSR
35
- var saveRefreshTokenServer = function (res) {
33
+ // Lưu lại refresh token từ header của response (chỉ SSR)
34
+ var saveRefreshTokenServer = function (response) {
36
35
  var _a;
37
- var setCookieHeader = ((_a = res.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
36
+ var setCookieHeader = ((_a = response.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
38
37
  var match = setCookieHeader.match(/refresh_token=([^;]+)/);
39
38
  var refreshToken = (match === null || match === void 0 ? void 0 : match[1]) || '';
40
39
  cookies().set(COOKIE_REFRESH_TOKEN, refreshToken, {
@@ -45,65 +44,100 @@ var saveRefreshTokenServer = function (res) {
45
44
  expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
46
45
  });
47
46
  };
48
- // Hàm refresh-token với promise-caching
47
+ // Gọi API refresh-token, đồng bộ hoá với AsyncLock
49
48
  var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0, function () {
50
49
  return __generator(this, function (_a) {
51
- if (refreshTokenPromise) {
52
- // Nếu đang 1 lần gọi chưa xong, chờ nó và return kết quả
53
- return [2 /*return*/, refreshTokenPromise];
54
- }
55
- refreshTokenPromise = (function () { return __awaiter(void 0, void 0, void 0, function () {
56
- var url, response, newToken, updatedSession, err_1;
57
- return __generator(this, function (_a) {
58
- switch (_a.label) {
59
- case 0:
60
- _a.trys.push([0, 2, 3, 4]);
61
- url = "".concat(isServer ? headers().get('origin') : '', "/api/authenticate/refresh-token");
62
- return [4 /*yield*/, axios.post(url, {}, { headers: getAuthHeaders() })];
63
- case 1:
64
- response = _a.sent();
65
- newToken = response.data.token;
66
- updatedSession = PHXFuncGetCookieSession();
67
- saveCookiesClient({ value: __assign(__assign({}, updatedSession), { access_token: newToken }) });
68
- // Lưu refresh_token SSR nếu cần
69
- if (isServer)
70
- saveRefreshTokenServer(response);
71
- return [2 /*return*/, newToken];
72
- case 2:
73
- err_1 = _a.sent();
74
- if (!isServer)
75
- window.location.href = loginPage;
76
- throw err_1;
77
- case 3:
78
- // Clear để lần sau có thể gọi lại khi token expire thêm
79
- refreshTokenPromise = null;
80
- return [7 /*endfinally*/];
81
- case 4: return [2 /*return*/];
82
- }
83
- });
84
- }); })();
85
- return [2 /*return*/, refreshTokenPromise];
50
+ return [2 /*return*/, lock.acquire('refresh_token', function () { return __awaiter(void 0, void 0, void 0, function () {
51
+ var currentSession, existing, url, response, newToken, updatedSession, err_1;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ currentSession = PHXFuncGetCookieSession();
56
+ existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
57
+ console.log('existing', existing);
58
+ if (existing)
59
+ return [2 /*return*/, existing
60
+ // Thực sự gọi API refresh
61
+ ];
62
+ _a.label = 1;
63
+ case 1:
64
+ _a.trys.push([1, 3, , 4]);
65
+ url = "".concat(isServer ? headers().get('origin') : '', "/api/authenticate/refresh-token");
66
+ return [4 /*yield*/, axios.post(url, {}, { headers: getAuthHeaders() })];
67
+ case 2:
68
+ response = _a.sent();
69
+ newToken = response.data.token;
70
+ updatedSession = PHXFuncGetCookieSession();
71
+ saveCookiesClient({
72
+ value: __assign(__assign({}, updatedSession), { access_token: newToken })
73
+ });
74
+ // Lưu refresh token SSR nếu cần
75
+ if (isServer)
76
+ saveRefreshTokenServer(response);
77
+ return [2 /*return*/, newToken];
78
+ case 3:
79
+ err_1 = _a.sent();
80
+ if (!isServer) {
81
+ window.location.href = loginPage;
82
+ }
83
+ throw err_1;
84
+ case 4: return [2 /*return*/];
85
+ }
86
+ });
87
+ }); })];
86
88
  });
87
89
  }); };
88
- // --- CHỈ request interceptor: chỉ add header, không catch 401 ---
89
- PHXAxiosInstance.interceptors.request.use(function (config) {
90
- var session = PHXFuncGetCookieSession();
91
- var token = session === null || session === void 0 ? void 0 : session.access_token;
92
- if (token) {
93
- config.headers = config.headers || {};
94
- config.headers.Authorization = "Bearer ".concat(token);
95
- }
96
- return config;
97
- });
98
- // --- Response interceptor: bắt 401, refresh, retry với token mới ---
90
+ // Request interceptor: luôn thêm Authorization nếu access_token
91
+ PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
92
+ var session, token, err_2, fresh;
93
+ var _a;
94
+ return __generator(this, function (_b) {
95
+ switch (_b.label) {
96
+ case 0:
97
+ session = PHXFuncGetCookieSession();
98
+ token = session === null || session === void 0 ? void 0 : session.access_token;
99
+ if (!token) return [3 /*break*/, 7];
100
+ config.headers = config.headers || {};
101
+ config.headers.Authorization = "Bearer ".concat(token);
102
+ if (!isServer) return [3 /*break*/, 7];
103
+ _b.label = 1;
104
+ case 1:
105
+ _b.trys.push([1, 3, , 7]);
106
+ return [4 /*yield*/, axios.post("".concat(internalUrl, "/authen/authenticate"), {}, { headers: __assign({ Authorization: "Bearer ".concat(token) }, getAuthHeaders()) })];
107
+ case 2:
108
+ _b.sent();
109
+ return [3 /*break*/, 7];
110
+ case 3:
111
+ err_2 = _b.sent();
112
+ if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
113
+ saveCookiesClient({
114
+ value: __assign(__assign({}, session), { access_token: '' })
115
+ });
116
+ return [4 /*yield*/, refreshAccessToken()];
117
+ case 4:
118
+ fresh = _b.sent();
119
+ config.headers.Authorization = "Bearer ".concat(fresh);
120
+ return [3 /*break*/, 6];
121
+ case 5: throw err_2;
122
+ case 6: return [3 /*break*/, 7];
123
+ case 7: return [2 /*return*/, config];
124
+ }
125
+ });
126
+ }); });
127
+ // Response interceptor: bắt 401, gọi refresh và retry
99
128
  PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
100
- var originalRequest, newToken, e_1;
129
+ var originalRequest, session, newToken, e_1;
101
130
  var _a;
102
131
  return __generator(this, function (_b) {
103
132
  switch (_b.label) {
104
133
  case 0:
134
+ console.log('errorerror', error);
105
135
  originalRequest = error.config;
106
136
  if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
137
+ session = PHXFuncGetCookieSession();
138
+ saveCookiesClient({
139
+ value: __assign(__assign({}, session), { access_token: '' })
140
+ });
107
141
  originalRequest._retry = true;
108
142
  _b.label = 1;
109
143
  case 1:
@@ -1 +1 @@
1
- {"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phx-uikit",
3
- "version": "1.0.225",
3
+ "version": "1.0.227",
4
4
  "description": "PHX REACT",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",