phx-uikit 1.0.224 → 1.0.226
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,16 +1,15 @@
|
|
|
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
|
-
|
|
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
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';
|
|
@@ -18,7 +17,7 @@ var PHXAxiosInstance = axios_1["default"].create({
|
|
|
18
17
|
baseURL: publicUrl
|
|
19
18
|
});
|
|
20
19
|
exports.PHXAxiosInstance = PHXAxiosInstance;
|
|
21
|
-
// Lấy
|
|
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
|
|
39
|
-
var saveRefreshTokenServer = function (
|
|
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 =
|
|
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,50 +48,49 @@ var saveRefreshTokenServer = function (res) {
|
|
|
49
48
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
50
49
|
});
|
|
51
50
|
};
|
|
52
|
-
//
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
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
|
+
if (existing)
|
|
62
|
+
return [2 /*return*/, existing
|
|
63
|
+
// Thực sự gọi API refresh
|
|
64
|
+
];
|
|
65
|
+
_a.label = 1;
|
|
66
|
+
case 1:
|
|
67
|
+
_a.trys.push([1, 3, , 4]);
|
|
68
|
+
url = "".concat(isServer ? (0, headers_1.headers)().get('origin') : '', "/api/authenticate/refresh-token");
|
|
69
|
+
return [4 /*yield*/, axios_1["default"].post(url, {}, { headers: getAuthHeaders() })];
|
|
70
|
+
case 2:
|
|
71
|
+
response = _a.sent();
|
|
72
|
+
newToken = response.data.token;
|
|
73
|
+
updatedSession = (0, getCookieSession_1["default"])();
|
|
74
|
+
(0, saveCookiesClient_1["default"])({
|
|
75
|
+
value: tslib_1.__assign(tslib_1.__assign({}, updatedSession), { access_token: newToken })
|
|
76
|
+
});
|
|
77
|
+
// Lưu refresh token SSR nếu cần
|
|
78
|
+
if (isServer)
|
|
79
|
+
saveRefreshTokenServer(response);
|
|
80
|
+
return [2 /*return*/, newToken];
|
|
81
|
+
case 3:
|
|
82
|
+
err_1 = _a.sent();
|
|
83
|
+
if (!isServer) {
|
|
84
|
+
window.location.href = constants_1.loginPage;
|
|
85
|
+
}
|
|
86
|
+
throw err_1;
|
|
87
|
+
case 4: return [2 /*return*/];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}); })];
|
|
93
91
|
});
|
|
94
92
|
}); };
|
|
95
|
-
// Request interceptor: thêm Authorization
|
|
93
|
+
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
96
94
|
PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
97
95
|
var session, token, err_2, fresh;
|
|
98
96
|
var _a;
|
|
@@ -115,6 +113,9 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__a
|
|
|
115
113
|
case 3:
|
|
116
114
|
err_2 = _b.sent();
|
|
117
115
|
if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
|
|
116
|
+
(0, saveCookiesClient_1["default"])({
|
|
117
|
+
value: tslib_1.__assign(tslib_1.__assign({}, session), { access_token: '' })
|
|
118
|
+
});
|
|
118
119
|
return [4 /*yield*/, refreshAccessToken()];
|
|
119
120
|
case 4:
|
|
120
121
|
fresh = _b.sent();
|
|
@@ -126,13 +127,14 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__a
|
|
|
126
127
|
}
|
|
127
128
|
});
|
|
128
129
|
}); });
|
|
129
|
-
// Response interceptor: bắt 401
|
|
130
|
+
// Response interceptor: bắt 401, gọi refresh và retry
|
|
130
131
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
131
132
|
var originalRequest, newToken, e_1;
|
|
132
133
|
var _a;
|
|
133
134
|
return tslib_1.__generator(this, function (_b) {
|
|
134
135
|
switch (_b.label) {
|
|
135
136
|
case 0:
|
|
137
|
+
console.log('errorerror', error);
|
|
136
138
|
originalRequest = error.config;
|
|
137
139
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
138
140
|
originalRequest._retry = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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
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
|
|
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
|
|
35
|
-
var saveRefreshTokenServer = function (
|
|
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 =
|
|
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,50 +44,49 @@ var saveRefreshTokenServer = function (res) {
|
|
|
45
44
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
46
45
|
});
|
|
47
46
|
};
|
|
48
|
-
//
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
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
|
+
if (existing)
|
|
58
|
+
return [2 /*return*/, existing
|
|
59
|
+
// Thực sự gọi API refresh
|
|
60
|
+
];
|
|
61
|
+
_a.label = 1;
|
|
62
|
+
case 1:
|
|
63
|
+
_a.trys.push([1, 3, , 4]);
|
|
64
|
+
url = "".concat(isServer ? headers().get('origin') : '', "/api/authenticate/refresh-token");
|
|
65
|
+
return [4 /*yield*/, axios.post(url, {}, { headers: getAuthHeaders() })];
|
|
66
|
+
case 2:
|
|
67
|
+
response = _a.sent();
|
|
68
|
+
newToken = response.data.token;
|
|
69
|
+
updatedSession = PHXFuncGetCookieSession();
|
|
70
|
+
saveCookiesClient({
|
|
71
|
+
value: __assign(__assign({}, updatedSession), { access_token: newToken })
|
|
72
|
+
});
|
|
73
|
+
// Lưu refresh token SSR nếu cần
|
|
74
|
+
if (isServer)
|
|
75
|
+
saveRefreshTokenServer(response);
|
|
76
|
+
return [2 /*return*/, newToken];
|
|
77
|
+
case 3:
|
|
78
|
+
err_1 = _a.sent();
|
|
79
|
+
if (!isServer) {
|
|
80
|
+
window.location.href = loginPage;
|
|
81
|
+
}
|
|
82
|
+
throw err_1;
|
|
83
|
+
case 4: return [2 /*return*/];
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}); })];
|
|
89
87
|
});
|
|
90
88
|
}); };
|
|
91
|
-
// Request interceptor: thêm Authorization
|
|
89
|
+
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
92
90
|
PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
93
91
|
var session, token, err_2, fresh;
|
|
94
92
|
var _a;
|
|
@@ -111,6 +109,9 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(v
|
|
|
111
109
|
case 3:
|
|
112
110
|
err_2 = _b.sent();
|
|
113
111
|
if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
|
|
112
|
+
saveCookiesClient({
|
|
113
|
+
value: __assign(__assign({}, session), { access_token: '' })
|
|
114
|
+
});
|
|
114
115
|
return [4 /*yield*/, refreshAccessToken()];
|
|
115
116
|
case 4:
|
|
116
117
|
fresh = _b.sent();
|
|
@@ -122,13 +123,14 @@ PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(v
|
|
|
122
123
|
}
|
|
123
124
|
});
|
|
124
125
|
}); });
|
|
125
|
-
// Response interceptor: bắt 401
|
|
126
|
+
// Response interceptor: bắt 401, gọi refresh và retry
|
|
126
127
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
|
|
127
128
|
var originalRequest, newToken, e_1;
|
|
128
129
|
var _a;
|
|
129
130
|
return __generator(this, function (_b) {
|
|
130
131
|
switch (_b.label) {
|
|
131
132
|
case 0:
|
|
133
|
+
console.log('errorerror', error);
|
|
132
134
|
originalRequest = error.config;
|
|
133
135
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
134
136
|
originalRequest._retry = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|