phx-uikit 1.0.227 → 1.0.228
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.
|
@@ -10,13 +10,16 @@ var saveCookiesClient_1 = tslib_1.__importDefault(require("./components/Func/sav
|
|
|
10
10
|
var getCookieSession_1 = tslib_1.__importDefault(require("./components/Func/getCookieSession"));
|
|
11
11
|
var headers_1 = require("next/headers");
|
|
12
12
|
var lock = new async_lock_1["default"]();
|
|
13
|
+
var isServer = typeof window === 'undefined';
|
|
13
14
|
var publicUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
14
15
|
var internalUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
|
|
15
|
-
var isServer = typeof window === 'undefined';
|
|
16
16
|
var PHXAxiosInstance = axios_1["default"].create({
|
|
17
17
|
baseURL: publicUrl
|
|
18
18
|
});
|
|
19
19
|
exports.PHXAxiosInstance = PHXAxiosInstance;
|
|
20
|
+
// === GLOBAL CACHE ===
|
|
21
|
+
var accessTokenCache = null;
|
|
22
|
+
var refreshingPromise = null;
|
|
20
23
|
// Lấy header (cookie + origin) khi chạy SSR
|
|
21
24
|
var getAuthHeaders = function () {
|
|
22
25
|
if (!isServer)
|
|
@@ -48,21 +51,27 @@ var saveRefreshTokenServer = function (response) {
|
|
|
48
51
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
49
52
|
});
|
|
50
53
|
};
|
|
51
|
-
//
|
|
54
|
+
// Hàm refresh access token, chỉ gọi 1 lần duy nhất tại một thời điểm
|
|
52
55
|
var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
53
56
|
return tslib_1.__generator(this, function (_a) {
|
|
54
|
-
|
|
57
|
+
if (!refreshingPromise) {
|
|
58
|
+
refreshingPromise = lock.acquire('refresh_token', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
55
59
|
var currentSession, existing, url, response, newToken, updatedSession, err_1;
|
|
56
60
|
return tslib_1.__generator(this, function (_a) {
|
|
57
61
|
switch (_a.label) {
|
|
58
62
|
case 0:
|
|
63
|
+
// Kiểm tra lại cache
|
|
64
|
+
if (accessTokenCache) {
|
|
65
|
+
refreshingPromise = null;
|
|
66
|
+
return [2 /*return*/, accessTokenCache];
|
|
67
|
+
}
|
|
59
68
|
currentSession = (0, getCookieSession_1["default"])();
|
|
60
69
|
existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
if (existing) {
|
|
71
|
+
accessTokenCache = existing;
|
|
72
|
+
refreshingPromise = null;
|
|
73
|
+
return [2 /*return*/, existing];
|
|
74
|
+
}
|
|
66
75
|
_a.label = 1;
|
|
67
76
|
case 1:
|
|
68
77
|
_a.trys.push([1, 3, , 4]);
|
|
@@ -71,16 +80,20 @@ var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0,
|
|
|
71
80
|
case 2:
|
|
72
81
|
response = _a.sent();
|
|
73
82
|
newToken = response.data.token;
|
|
83
|
+
// Cập nhật cache
|
|
84
|
+
accessTokenCache = newToken;
|
|
74
85
|
updatedSession = (0, getCookieSession_1["default"])();
|
|
75
86
|
(0, saveCookiesClient_1["default"])({
|
|
76
87
|
value: tslib_1.__assign(tslib_1.__assign({}, updatedSession), { access_token: newToken })
|
|
77
88
|
});
|
|
78
|
-
// Lưu refresh token
|
|
89
|
+
// Lưu refresh token phía server nếu SSR
|
|
79
90
|
if (isServer)
|
|
80
91
|
saveRefreshTokenServer(response);
|
|
92
|
+
refreshingPromise = null;
|
|
81
93
|
return [2 /*return*/, newToken];
|
|
82
94
|
case 3:
|
|
83
95
|
err_1 = _a.sent();
|
|
96
|
+
refreshingPromise = null;
|
|
84
97
|
if (!isServer) {
|
|
85
98
|
window.location.href = constants_1.loginPage;
|
|
86
99
|
}
|
|
@@ -88,20 +101,27 @@ var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0,
|
|
|
88
101
|
case 4: return [2 /*return*/];
|
|
89
102
|
}
|
|
90
103
|
});
|
|
91
|
-
}); })
|
|
104
|
+
}); });
|
|
105
|
+
}
|
|
106
|
+
return [2 /*return*/, refreshingPromise];
|
|
92
107
|
});
|
|
93
108
|
}); };
|
|
94
109
|
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
95
110
|
PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
96
|
-
var
|
|
111
|
+
var token, session, err_2, fresh;
|
|
97
112
|
var _a;
|
|
98
113
|
return tslib_1.__generator(this, function (_b) {
|
|
99
114
|
switch (_b.label) {
|
|
100
115
|
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
116
|
config.headers = config.headers || {};
|
|
117
|
+
token = accessTokenCache;
|
|
118
|
+
if (!token) {
|
|
119
|
+
session = (0, getCookieSession_1["default"])();
|
|
120
|
+
token = (session === null || session === void 0 ? void 0 : session.access_token) || null;
|
|
121
|
+
if (token)
|
|
122
|
+
accessTokenCache = token;
|
|
123
|
+
}
|
|
124
|
+
if (!token) return [3 /*break*/, 7];
|
|
105
125
|
config.headers.Authorization = "Bearer ".concat(token);
|
|
106
126
|
if (!isServer) return [3 /*break*/, 7];
|
|
107
127
|
_b.label = 1;
|
|
@@ -114,9 +134,6 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__a
|
|
|
114
134
|
case 3:
|
|
115
135
|
err_2 = _b.sent();
|
|
116
136
|
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
137
|
return [4 /*yield*/, refreshAccessToken()];
|
|
121
138
|
case 4:
|
|
122
139
|
fresh = _b.sent();
|
|
@@ -128,20 +145,15 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__a
|
|
|
128
145
|
}
|
|
129
146
|
});
|
|
130
147
|
}); });
|
|
131
|
-
// Response interceptor: bắt 401, gọi refresh và retry
|
|
148
|
+
// Response interceptor: bắt lỗi 401, gọi refresh và retry
|
|
132
149
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
133
|
-
var originalRequest,
|
|
150
|
+
var originalRequest, newToken, e_1;
|
|
134
151
|
var _a;
|
|
135
152
|
return tslib_1.__generator(this, function (_b) {
|
|
136
153
|
switch (_b.label) {
|
|
137
154
|
case 0:
|
|
138
|
-
console.log('errorerror', error);
|
|
139
155
|
originalRequest = error.config;
|
|
140
156
|
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
|
-
});
|
|
145
157
|
originalRequest._retry = true;
|
|
146
158
|
_b.label = 1;
|
|
147
159
|
case 1:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":";;;;AAAA,wDAA4C;AAC5C,kEAAkC;AAClC,qDAA0C;AAC1C,+CAAmE;AACnE,kGAAmE;AACnE,gGAAwE;AACxE,wCAA+C;AAS/C,IAAM,IAAI,GAAG,IAAI,uBAAS,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,15 @@ import saveCookiesClient from './components/Func/saveCookiesClient';
|
|
|
7
7
|
import PHXFuncGetCookieSession from './components/Func/getCookieSession';
|
|
8
8
|
import { cookies, headers } from 'next/headers';
|
|
9
9
|
var lock = new AsyncLock();
|
|
10
|
+
var isServer = typeof window === 'undefined';
|
|
10
11
|
var publicUrl = getEnv('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
11
12
|
var internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
|
|
12
|
-
var isServer = typeof window === 'undefined';
|
|
13
13
|
var PHXAxiosInstance = axios.create({
|
|
14
14
|
baseURL: publicUrl
|
|
15
15
|
});
|
|
16
|
+
// === GLOBAL CACHE ===
|
|
17
|
+
var accessTokenCache = null;
|
|
18
|
+
var refreshingPromise = null;
|
|
16
19
|
// Lấy header (cookie + origin) khi chạy SSR
|
|
17
20
|
var getAuthHeaders = function () {
|
|
18
21
|
if (!isServer)
|
|
@@ -44,21 +47,27 @@ var saveRefreshTokenServer = function (response) {
|
|
|
44
47
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
45
48
|
});
|
|
46
49
|
};
|
|
47
|
-
//
|
|
50
|
+
// Hàm refresh access token, chỉ gọi 1 lần duy nhất tại một thời điểm
|
|
48
51
|
var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
49
52
|
return __generator(this, function (_a) {
|
|
50
|
-
|
|
53
|
+
if (!refreshingPromise) {
|
|
54
|
+
refreshingPromise = lock.acquire('refresh_token', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
51
55
|
var currentSession, existing, url, response, newToken, updatedSession, err_1;
|
|
52
56
|
return __generator(this, function (_a) {
|
|
53
57
|
switch (_a.label) {
|
|
54
58
|
case 0:
|
|
59
|
+
// Kiểm tra lại cache
|
|
60
|
+
if (accessTokenCache) {
|
|
61
|
+
refreshingPromise = null;
|
|
62
|
+
return [2 /*return*/, accessTokenCache];
|
|
63
|
+
}
|
|
55
64
|
currentSession = PHXFuncGetCookieSession();
|
|
56
65
|
existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
if (existing) {
|
|
67
|
+
accessTokenCache = existing;
|
|
68
|
+
refreshingPromise = null;
|
|
69
|
+
return [2 /*return*/, existing];
|
|
70
|
+
}
|
|
62
71
|
_a.label = 1;
|
|
63
72
|
case 1:
|
|
64
73
|
_a.trys.push([1, 3, , 4]);
|
|
@@ -67,16 +76,20 @@ var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
67
76
|
case 2:
|
|
68
77
|
response = _a.sent();
|
|
69
78
|
newToken = response.data.token;
|
|
79
|
+
// Cập nhật cache
|
|
80
|
+
accessTokenCache = newToken;
|
|
70
81
|
updatedSession = PHXFuncGetCookieSession();
|
|
71
82
|
saveCookiesClient({
|
|
72
83
|
value: __assign(__assign({}, updatedSession), { access_token: newToken })
|
|
73
84
|
});
|
|
74
|
-
// Lưu refresh token
|
|
85
|
+
// Lưu refresh token phía server nếu SSR
|
|
75
86
|
if (isServer)
|
|
76
87
|
saveRefreshTokenServer(response);
|
|
88
|
+
refreshingPromise = null;
|
|
77
89
|
return [2 /*return*/, newToken];
|
|
78
90
|
case 3:
|
|
79
91
|
err_1 = _a.sent();
|
|
92
|
+
refreshingPromise = null;
|
|
80
93
|
if (!isServer) {
|
|
81
94
|
window.location.href = loginPage;
|
|
82
95
|
}
|
|
@@ -84,20 +97,27 @@ var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
84
97
|
case 4: return [2 /*return*/];
|
|
85
98
|
}
|
|
86
99
|
});
|
|
87
|
-
}); })
|
|
100
|
+
}); });
|
|
101
|
+
}
|
|
102
|
+
return [2 /*return*/, refreshingPromise];
|
|
88
103
|
});
|
|
89
104
|
}); };
|
|
90
105
|
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
91
106
|
PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
92
|
-
var
|
|
107
|
+
var token, session, err_2, fresh;
|
|
93
108
|
var _a;
|
|
94
109
|
return __generator(this, function (_b) {
|
|
95
110
|
switch (_b.label) {
|
|
96
111
|
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
112
|
config.headers = config.headers || {};
|
|
113
|
+
token = accessTokenCache;
|
|
114
|
+
if (!token) {
|
|
115
|
+
session = PHXFuncGetCookieSession();
|
|
116
|
+
token = (session === null || session === void 0 ? void 0 : session.access_token) || null;
|
|
117
|
+
if (token)
|
|
118
|
+
accessTokenCache = token;
|
|
119
|
+
}
|
|
120
|
+
if (!token) return [3 /*break*/, 7];
|
|
101
121
|
config.headers.Authorization = "Bearer ".concat(token);
|
|
102
122
|
if (!isServer) return [3 /*break*/, 7];
|
|
103
123
|
_b.label = 1;
|
|
@@ -110,9 +130,6 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(v
|
|
|
110
130
|
case 3:
|
|
111
131
|
err_2 = _b.sent();
|
|
112
132
|
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
133
|
return [4 /*yield*/, refreshAccessToken()];
|
|
117
134
|
case 4:
|
|
118
135
|
fresh = _b.sent();
|
|
@@ -124,20 +141,15 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(v
|
|
|
124
141
|
}
|
|
125
142
|
});
|
|
126
143
|
}); });
|
|
127
|
-
// Response interceptor: bắt 401, gọi refresh và retry
|
|
144
|
+
// Response interceptor: bắt lỗi 401, gọi refresh và retry
|
|
128
145
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
|
|
129
|
-
var originalRequest,
|
|
146
|
+
var originalRequest, newToken, e_1;
|
|
130
147
|
var _a;
|
|
131
148
|
return __generator(this, function (_b) {
|
|
132
149
|
switch (_b.label) {
|
|
133
150
|
case 0:
|
|
134
|
-
console.log('errorerror', error);
|
|
135
151
|
originalRequest = error.config;
|
|
136
152
|
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
|
-
});
|
|
141
153
|
originalRequest._retry = true;
|
|
142
154
|
_b.label = 1;
|
|
143
155
|
case 1:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":";AAAA,OAAO,KAAwB,MAAM,OAAO,CAAA;AAC5C,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,iBAAiB,MAAM,qCAAqC,CAAA;AACnE,OAAO,uBAAuB,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAS/C,IAAM,IAAI,GAAG,IAAI,SAAS,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|