phx-uikit 1.0.227 → 1.0.229
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,30 @@ 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
|
+
console.log('refreshingPromise', refreshingPromise);
|
|
58
|
+
if (!refreshingPromise) {
|
|
59
|
+
refreshingPromise = lock.acquire('refresh_token', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
55
60
|
var currentSession, existing, url, response, newToken, updatedSession, err_1;
|
|
56
61
|
return tslib_1.__generator(this, function (_a) {
|
|
57
62
|
switch (_a.label) {
|
|
58
63
|
case 0:
|
|
64
|
+
// Kiểm tra lại cache
|
|
65
|
+
console.log('accessTokenCache', accessTokenCache);
|
|
66
|
+
if (accessTokenCache) {
|
|
67
|
+
refreshingPromise = null;
|
|
68
|
+
return [2 /*return*/, accessTokenCache];
|
|
69
|
+
}
|
|
59
70
|
currentSession = (0, getCookieSession_1["default"])();
|
|
60
71
|
existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
|
|
61
72
|
console.log('existing', existing);
|
|
62
|
-
if (existing)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
];
|
|
73
|
+
if (existing) {
|
|
74
|
+
accessTokenCache = existing;
|
|
75
|
+
refreshingPromise = null;
|
|
76
|
+
return [2 /*return*/, existing];
|
|
77
|
+
}
|
|
66
78
|
_a.label = 1;
|
|
67
79
|
case 1:
|
|
68
80
|
_a.trys.push([1, 3, , 4]);
|
|
@@ -71,16 +83,20 @@ var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0,
|
|
|
71
83
|
case 2:
|
|
72
84
|
response = _a.sent();
|
|
73
85
|
newToken = response.data.token;
|
|
86
|
+
// Cập nhật cache
|
|
87
|
+
accessTokenCache = newToken;
|
|
74
88
|
updatedSession = (0, getCookieSession_1["default"])();
|
|
75
89
|
(0, saveCookiesClient_1["default"])({
|
|
76
90
|
value: tslib_1.__assign(tslib_1.__assign({}, updatedSession), { access_token: newToken })
|
|
77
91
|
});
|
|
78
|
-
// Lưu refresh token
|
|
92
|
+
// Lưu refresh token phía server nếu SSR
|
|
79
93
|
if (isServer)
|
|
80
94
|
saveRefreshTokenServer(response);
|
|
95
|
+
refreshingPromise = null;
|
|
81
96
|
return [2 /*return*/, newToken];
|
|
82
97
|
case 3:
|
|
83
98
|
err_1 = _a.sent();
|
|
99
|
+
refreshingPromise = null;
|
|
84
100
|
if (!isServer) {
|
|
85
101
|
window.location.href = constants_1.loginPage;
|
|
86
102
|
}
|
|
@@ -88,20 +104,27 @@ var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0,
|
|
|
88
104
|
case 4: return [2 /*return*/];
|
|
89
105
|
}
|
|
90
106
|
});
|
|
91
|
-
}); })
|
|
107
|
+
}); });
|
|
108
|
+
}
|
|
109
|
+
return [2 /*return*/, refreshingPromise];
|
|
92
110
|
});
|
|
93
111
|
}); };
|
|
94
112
|
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
95
113
|
PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
96
|
-
var
|
|
114
|
+
var token, session, err_2, fresh;
|
|
97
115
|
var _a;
|
|
98
116
|
return tslib_1.__generator(this, function (_b) {
|
|
99
117
|
switch (_b.label) {
|
|
100
118
|
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
119
|
config.headers = config.headers || {};
|
|
120
|
+
token = accessTokenCache;
|
|
121
|
+
if (!token) {
|
|
122
|
+
session = (0, getCookieSession_1["default"])();
|
|
123
|
+
token = (session === null || session === void 0 ? void 0 : session.access_token) || null;
|
|
124
|
+
if (token)
|
|
125
|
+
accessTokenCache = token;
|
|
126
|
+
}
|
|
127
|
+
if (!token) return [3 /*break*/, 7];
|
|
105
128
|
config.headers.Authorization = "Bearer ".concat(token);
|
|
106
129
|
if (!isServer) return [3 /*break*/, 7];
|
|
107
130
|
_b.label = 1;
|
|
@@ -114,9 +137,6 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__a
|
|
|
114
137
|
case 3:
|
|
115
138
|
err_2 = _b.sent();
|
|
116
139
|
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
140
|
return [4 /*yield*/, refreshAccessToken()];
|
|
121
141
|
case 4:
|
|
122
142
|
fresh = _b.sent();
|
|
@@ -128,20 +148,15 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__a
|
|
|
128
148
|
}
|
|
129
149
|
});
|
|
130
150
|
}); });
|
|
131
|
-
// Response interceptor: bắt 401, gọi refresh và retry
|
|
151
|
+
// Response interceptor: bắt lỗi 401, gọi refresh và retry
|
|
132
152
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
133
|
-
var originalRequest,
|
|
153
|
+
var originalRequest, newToken, e_1;
|
|
134
154
|
var _a;
|
|
135
155
|
return tslib_1.__generator(this, function (_b) {
|
|
136
156
|
switch (_b.label) {
|
|
137
157
|
case 0:
|
|
138
|
-
console.log('errorerror', error);
|
|
139
158
|
originalRequest = error.config;
|
|
140
159
|
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
160
|
originalRequest._retry = true;
|
|
146
161
|
_b.label = 1;
|
|
147
162
|
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,30 @@ 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
|
+
console.log('refreshingPromise', refreshingPromise);
|
|
54
|
+
if (!refreshingPromise) {
|
|
55
|
+
refreshingPromise = lock.acquire('refresh_token', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
51
56
|
var currentSession, existing, url, response, newToken, updatedSession, err_1;
|
|
52
57
|
return __generator(this, function (_a) {
|
|
53
58
|
switch (_a.label) {
|
|
54
59
|
case 0:
|
|
60
|
+
// Kiểm tra lại cache
|
|
61
|
+
console.log('accessTokenCache', accessTokenCache);
|
|
62
|
+
if (accessTokenCache) {
|
|
63
|
+
refreshingPromise = null;
|
|
64
|
+
return [2 /*return*/, accessTokenCache];
|
|
65
|
+
}
|
|
55
66
|
currentSession = PHXFuncGetCookieSession();
|
|
56
67
|
existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
|
|
57
68
|
console.log('existing', existing);
|
|
58
|
-
if (existing)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
];
|
|
69
|
+
if (existing) {
|
|
70
|
+
accessTokenCache = existing;
|
|
71
|
+
refreshingPromise = null;
|
|
72
|
+
return [2 /*return*/, existing];
|
|
73
|
+
}
|
|
62
74
|
_a.label = 1;
|
|
63
75
|
case 1:
|
|
64
76
|
_a.trys.push([1, 3, , 4]);
|
|
@@ -67,16 +79,20 @@ var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
67
79
|
case 2:
|
|
68
80
|
response = _a.sent();
|
|
69
81
|
newToken = response.data.token;
|
|
82
|
+
// Cập nhật cache
|
|
83
|
+
accessTokenCache = newToken;
|
|
70
84
|
updatedSession = PHXFuncGetCookieSession();
|
|
71
85
|
saveCookiesClient({
|
|
72
86
|
value: __assign(__assign({}, updatedSession), { access_token: newToken })
|
|
73
87
|
});
|
|
74
|
-
// Lưu refresh token
|
|
88
|
+
// Lưu refresh token phía server nếu SSR
|
|
75
89
|
if (isServer)
|
|
76
90
|
saveRefreshTokenServer(response);
|
|
91
|
+
refreshingPromise = null;
|
|
77
92
|
return [2 /*return*/, newToken];
|
|
78
93
|
case 3:
|
|
79
94
|
err_1 = _a.sent();
|
|
95
|
+
refreshingPromise = null;
|
|
80
96
|
if (!isServer) {
|
|
81
97
|
window.location.href = loginPage;
|
|
82
98
|
}
|
|
@@ -84,20 +100,27 @@ var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
84
100
|
case 4: return [2 /*return*/];
|
|
85
101
|
}
|
|
86
102
|
});
|
|
87
|
-
}); })
|
|
103
|
+
}); });
|
|
104
|
+
}
|
|
105
|
+
return [2 /*return*/, refreshingPromise];
|
|
88
106
|
});
|
|
89
107
|
}); };
|
|
90
108
|
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
91
109
|
PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
92
|
-
var
|
|
110
|
+
var token, session, err_2, fresh;
|
|
93
111
|
var _a;
|
|
94
112
|
return __generator(this, function (_b) {
|
|
95
113
|
switch (_b.label) {
|
|
96
114
|
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
115
|
config.headers = config.headers || {};
|
|
116
|
+
token = accessTokenCache;
|
|
117
|
+
if (!token) {
|
|
118
|
+
session = PHXFuncGetCookieSession();
|
|
119
|
+
token = (session === null || session === void 0 ? void 0 : session.access_token) || null;
|
|
120
|
+
if (token)
|
|
121
|
+
accessTokenCache = token;
|
|
122
|
+
}
|
|
123
|
+
if (!token) return [3 /*break*/, 7];
|
|
101
124
|
config.headers.Authorization = "Bearer ".concat(token);
|
|
102
125
|
if (!isServer) return [3 /*break*/, 7];
|
|
103
126
|
_b.label = 1;
|
|
@@ -110,9 +133,6 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(v
|
|
|
110
133
|
case 3:
|
|
111
134
|
err_2 = _b.sent();
|
|
112
135
|
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
136
|
return [4 /*yield*/, refreshAccessToken()];
|
|
117
137
|
case 4:
|
|
118
138
|
fresh = _b.sent();
|
|
@@ -124,20 +144,15 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(v
|
|
|
124
144
|
}
|
|
125
145
|
});
|
|
126
146
|
}); });
|
|
127
|
-
// Response interceptor: bắt 401, gọi refresh và retry
|
|
147
|
+
// Response interceptor: bắt lỗi 401, gọi refresh và retry
|
|
128
148
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
|
|
129
|
-
var originalRequest,
|
|
149
|
+
var originalRequest, newToken, e_1;
|
|
130
150
|
var _a;
|
|
131
151
|
return __generator(this, function (_b) {
|
|
132
152
|
switch (_b.label) {
|
|
133
153
|
case 0:
|
|
134
|
-
console.log('errorerror', error);
|
|
135
154
|
originalRequest = error.config;
|
|
136
155
|
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
156
|
originalRequest._retry = true;
|
|
142
157
|
_b.label = 1;
|
|
143
158
|
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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"}
|