phx-uikit 1.0.225 → 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,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
|
-
|
|
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';
|
|
17
16
|
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,63 +48,93 @@ 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
|
-
|
|
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
|
+
}); })];
|
|
90
91
|
});
|
|
91
92
|
}); };
|
|
92
|
-
//
|
|
93
|
-
PHXAxiosInstance.interceptors.request.use(function (config) {
|
|
94
|
-
var session
|
|
95
|
-
var
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
93
|
+
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
94
|
+
PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
95
|
+
var session, token, err_2, fresh;
|
|
96
|
+
var _a;
|
|
97
|
+
return tslib_1.__generator(this, function (_b) {
|
|
98
|
+
switch (_b.label) {
|
|
99
|
+
case 0:
|
|
100
|
+
session = (0, getCookieSession_1["default"])();
|
|
101
|
+
token = session === null || session === void 0 ? void 0 : session.access_token;
|
|
102
|
+
if (!token) return [3 /*break*/, 7];
|
|
103
|
+
config.headers = config.headers || {};
|
|
104
|
+
config.headers.Authorization = "Bearer ".concat(token);
|
|
105
|
+
if (!isServer) return [3 /*break*/, 7];
|
|
106
|
+
_b.label = 1;
|
|
107
|
+
case 1:
|
|
108
|
+
_b.trys.push([1, 3, , 7]);
|
|
109
|
+
return [4 /*yield*/, axios_1["default"].post("".concat(internalUrl, "/authen/authenticate"), {}, { headers: tslib_1.__assign({ Authorization: "Bearer ".concat(token) }, getAuthHeaders()) })];
|
|
110
|
+
case 2:
|
|
111
|
+
_b.sent();
|
|
112
|
+
return [3 /*break*/, 7];
|
|
113
|
+
case 3:
|
|
114
|
+
err_2 = _b.sent();
|
|
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
|
+
});
|
|
119
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
120
|
+
case 4:
|
|
121
|
+
fresh = _b.sent();
|
|
122
|
+
config.headers.Authorization = "Bearer ".concat(fresh);
|
|
123
|
+
return [3 /*break*/, 6];
|
|
124
|
+
case 5: throw err_2;
|
|
125
|
+
case 6: return [3 /*break*/, 7];
|
|
126
|
+
case 7: return [2 /*return*/, config];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}); });
|
|
130
|
+
// Response interceptor: bắt 401, gọi refresh và retry
|
|
103
131
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
104
132
|
var originalRequest, newToken, e_1;
|
|
105
133
|
var _a;
|
|
106
134
|
return tslib_1.__generator(this, function (_b) {
|
|
107
135
|
switch (_b.label) {
|
|
108
136
|
case 0:
|
|
137
|
+
console.log('errorerror', error);
|
|
109
138
|
originalRequest = error.config;
|
|
110
139
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
111
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,63 +44,93 @@ 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
|
-
|
|
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
|
+
}); })];
|
|
86
87
|
});
|
|
87
88
|
}); };
|
|
88
|
-
//
|
|
89
|
-
PHXAxiosInstance.interceptors.request.use(function (config) {
|
|
90
|
-
var session
|
|
91
|
-
var
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
90
|
+
PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
91
|
+
var session, token, err_2, fresh;
|
|
92
|
+
var _a;
|
|
93
|
+
return __generator(this, function (_b) {
|
|
94
|
+
switch (_b.label) {
|
|
95
|
+
case 0:
|
|
96
|
+
session = PHXFuncGetCookieSession();
|
|
97
|
+
token = session === null || session === void 0 ? void 0 : session.access_token;
|
|
98
|
+
if (!token) return [3 /*break*/, 7];
|
|
99
|
+
config.headers = config.headers || {};
|
|
100
|
+
config.headers.Authorization = "Bearer ".concat(token);
|
|
101
|
+
if (!isServer) return [3 /*break*/, 7];
|
|
102
|
+
_b.label = 1;
|
|
103
|
+
case 1:
|
|
104
|
+
_b.trys.push([1, 3, , 7]);
|
|
105
|
+
return [4 /*yield*/, axios.post("".concat(internalUrl, "/authen/authenticate"), {}, { headers: __assign({ Authorization: "Bearer ".concat(token) }, getAuthHeaders()) })];
|
|
106
|
+
case 2:
|
|
107
|
+
_b.sent();
|
|
108
|
+
return [3 /*break*/, 7];
|
|
109
|
+
case 3:
|
|
110
|
+
err_2 = _b.sent();
|
|
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
|
+
});
|
|
115
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
116
|
+
case 4:
|
|
117
|
+
fresh = _b.sent();
|
|
118
|
+
config.headers.Authorization = "Bearer ".concat(fresh);
|
|
119
|
+
return [3 /*break*/, 6];
|
|
120
|
+
case 5: throw err_2;
|
|
121
|
+
case 6: return [3 /*break*/, 7];
|
|
122
|
+
case 7: return [2 /*return*/, config];
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}); });
|
|
126
|
+
// Response interceptor: bắt 401, gọi refresh và retry
|
|
99
127
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
|
|
100
128
|
var originalRequest, newToken, e_1;
|
|
101
129
|
var _a;
|
|
102
130
|
return __generator(this, function (_b) {
|
|
103
131
|
switch (_b.label) {
|
|
104
132
|
case 0:
|
|
133
|
+
console.log('errorerror', error);
|
|
105
134
|
originalRequest = error.config;
|
|
106
135
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
107
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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"}
|