@smg-automotive/auth 6.2.0-middleware-token-refresh.2 → 6.2.0
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.
- package/README.md +0 -3
- package/dist/cjs/apiRoutes/handlers/creators/token.d.ts +1 -1
- package/dist/cjs/apiRoutes/handlers/creators/token.js +4 -2
- package/dist/cjs/apiRoutes/handlers/creators/token.js.map +1 -1
- package/dist/cjs/contexts/Auth.js +67 -19
- package/dist/cjs/contexts/Auth.js.map +1 -1
- package/dist/cjs/getServerAuthProps/app.d.ts +2 -1
- package/dist/cjs/getServerAuthProps/app.js +8 -5
- package/dist/cjs/getServerAuthProps/app.js.map +1 -1
- package/dist/cjs/getServerAuthProps/getAuthProps.js +11 -13
- package/dist/cjs/getServerAuthProps/getAuthProps.js.map +1 -1
- package/dist/cjs/getServerAuthProps/pages.js +12 -8
- package/dist/cjs/getServerAuthProps/pages.js.map +1 -1
- package/dist/cjs/lib/request/getAccessToken.d.ts +5 -8
- package/dist/cjs/lib/request/getAccessToken.js +86 -9
- package/dist/cjs/lib/request/getAccessToken.js.map +1 -1
- package/dist/cjs/lib/request/inFlightAccessTokenCache.d.ts +8 -0
- package/dist/cjs/lib/request/inFlightAccessTokenCache.js +6 -0
- package/dist/cjs/lib/request/inFlightAccessTokenCache.js.map +1 -0
- package/dist/cjs/middleware.d.ts +4 -7
- package/dist/cjs/middleware.js +11 -46
- package/dist/cjs/middleware.js.map +1 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js +0 -11
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/edge.d.ts +4 -8
- package/dist/esm/apiRoutes/handlers/creators/token.d.ts +1 -1
- package/dist/esm/apiRoutes/handlers/creators/token.js +4 -2
- package/dist/esm/apiRoutes/handlers/creators/token.js.map +1 -1
- package/dist/esm/contexts/Auth.js +68 -20
- package/dist/esm/contexts/Auth.js.map +1 -1
- package/dist/esm/getServerAuthProps/app.d.ts +2 -1
- package/dist/esm/getServerAuthProps/app.js +9 -6
- package/dist/esm/getServerAuthProps/app.js.map +1 -1
- package/dist/esm/getServerAuthProps/getAuthProps.js +10 -12
- package/dist/esm/getServerAuthProps/getAuthProps.js.map +1 -1
- package/dist/esm/getServerAuthProps/pages.js +13 -9
- package/dist/esm/getServerAuthProps/pages.js.map +1 -1
- package/dist/esm/lib/request/getAccessToken.d.ts +5 -8
- package/dist/esm/lib/request/getAccessToken.js +87 -10
- package/dist/esm/lib/request/getAccessToken.js.map +1 -1
- package/dist/esm/lib/request/inFlightAccessTokenCache.d.ts +8 -0
- package/dist/esm/lib/request/inFlightAccessTokenCache.js +4 -0
- package/dist/esm/lib/request/inFlightAccessTokenCache.js.map +1 -0
- package/dist/esm/middleware.d.ts +4 -7
- package/dist/esm/middleware.js +11 -46
- package/dist/esm/middleware.js.map +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +1 -11
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/server.d.ts +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -196,14 +196,11 @@ export default function middleware(
|
|
|
196
196
|
|
|
197
197
|
return authMiddleware({
|
|
198
198
|
request,
|
|
199
|
-
event,
|
|
200
199
|
isProtectedRoute,
|
|
201
200
|
language,
|
|
202
201
|
isProxied,
|
|
203
202
|
protocol,
|
|
204
203
|
host,
|
|
205
|
-
// You can pass the error handler of your choice
|
|
206
|
-
// onError: Sentry.captureException,
|
|
207
204
|
});
|
|
208
205
|
}
|
|
209
206
|
```
|
|
@@ -8,5 +8,5 @@ type ErrorResponse = {
|
|
|
8
8
|
code: string;
|
|
9
9
|
};
|
|
10
10
|
type ResponseData = TokenResponse | ErrorResponse;
|
|
11
|
-
export declare const createTokenHandler: ({ host, protocol, isProxied }: HandlerCreatorParams) => (request: NextApiRequest, response: NextApiResponse<ResponseData>) => Promise<
|
|
11
|
+
export declare const createTokenHandler: ({ host, protocol, isProxied }: HandlerCreatorParams) => (request: NextApiRequest, response: NextApiResponse<ResponseData>) => Promise<void>;
|
|
12
12
|
export {};
|
|
@@ -19,7 +19,8 @@ var createTokenHandler = function (_a) {
|
|
|
19
19
|
case 1:
|
|
20
20
|
session = _b.sent();
|
|
21
21
|
if (!session) {
|
|
22
|
-
|
|
22
|
+
response.status(204).end();
|
|
23
|
+
return [2 /*return*/];
|
|
23
24
|
}
|
|
24
25
|
_a = request.query, refreshParameter = _a.refresh, sellerIdParameter = _a.sellerId;
|
|
25
26
|
refresh = refreshParameter === 'true';
|
|
@@ -44,7 +45,8 @@ var createTokenHandler = function (_a) {
|
|
|
44
45
|
case 3:
|
|
45
46
|
accessToken = _b.sent();
|
|
46
47
|
if (!accessToken) {
|
|
47
|
-
|
|
48
|
+
response.status(204).end();
|
|
49
|
+
return [2 /*return*/];
|
|
48
50
|
}
|
|
49
51
|
response.status(200).json({
|
|
50
52
|
accessToken: accessToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sources":["../../../../../../src/apiRoutes/handlers/creators/token.ts"],"sourcesContent":[null],"names":["__awaiter","getAuth0Instance","getAccessToken"],"mappings":";;;;;;AAkBA,IAAM,YAAY,GAAG,UAAC,KAAc,EAAA;AAClC,IAAA,QACE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;AAE/E,CAAC;AAEM,IAAM,kBAAkB,GAC7B,UAAC,EAAmD,EAAA;AAAjD,IAAA,IAAA,IAAI,UAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA;IAC5B,OAAA,UAAO,OAAuB,EAAE,QAAuC,EAAA,EAAA,OAAAA,mBAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;AAC/D,oBAAA,aAAa,GAAGC,iCAAgB,CAAC,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,SAAS,EAAA,SAAA,EAAE,CAAC;oBACrD,OAAM,CAAA,CAAA,YAAA,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAA3D,oBAAA,OAAO,GAAG,EAAiD,CAAA,IAAA,EAAA;oBACjE,IAAI,CAAC,OAAO,EAAE;wBACZ,
|
|
1
|
+
{"version":3,"file":"token.js","sources":["../../../../../../src/apiRoutes/handlers/creators/token.ts"],"sourcesContent":[null],"names":["__awaiter","getAuth0Instance","getAccessToken"],"mappings":";;;;;;AAkBA,IAAM,YAAY,GAAG,UAAC,KAAc,EAAA;AAClC,IAAA,QACE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;AAE/E,CAAC;AAEM,IAAM,kBAAkB,GAC7B,UAAC,EAAmD,EAAA;AAAjD,IAAA,IAAA,IAAI,UAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA;IAC5B,OAAA,UAAO,OAAuB,EAAE,QAAuC,EAAA,EAAA,OAAAA,mBAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;AAC/D,oBAAA,aAAa,GAAGC,iCAAgB,CAAC,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE,SAAS,EAAA,SAAA,EAAE,CAAC;oBACrD,OAAM,CAAA,CAAA,YAAA,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAA3D,oBAAA,OAAO,GAAG,EAAiD,CAAA,IAAA,EAAA;oBACjE,IAAI,CAAC,OAAO,EAAE;wBACZ,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;wBAC1B,OAAO,CAAA,CAAA,YAAA;;oBAIP,EACE,GAAA,OAAO,MADwD,EAA/C,gBAAgB,aAAA,EAAY,iBAAiB,cAAA;AAE3D,oBAAA,OAAO,GAAG,gBAAgB,KAAK,MAAM;oBACrC,iBAAiB,GACrB,iBAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB;AACnD,0BAAE;0BACA,EAAE;;;;AAGc,oBAAA,OAAA,CAAA,CAAA,YAAMC,6BAAc,CAAC;AACvC,4BAAA,aAAa,EAAA,aAAA;AACb,4BAAA,SAAS,EAAA,SAAA;AACT,4BAAA,OAAO,EAAE;AACP,gCAAA,OAAO,EAAA,OAAA;AACP,gCAAA,QAAQ,EAAA,QAAA;AACT,6BAAA;AACD,4BAAA,OAAO,EAAE;AACP,gCAAA,OAAO,EAAA,OAAA;AACP,gCAAA,QAAQ,EAAE,iBAAiB;AAC5B,6BAAA;AACF,yBAAA,CAAC,CAAA;;AAXI,oBAAA,WAAW,GAAG,EAWlB,CAAA,IAAA,EAAA;oBAEF,IAAI,CAAC,WAAW,EAAE;wBAChB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;wBAC1B,OAAO,CAAA,CAAA,YAAA;;AAGT,oBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,wBAAA,WAAW,EAAA,WAAA;wBACX,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,GAAG,EAAE;AACjE,qBAAA,CAAC;oBACF,QAAQ,CAAC,GAAG,EAAE;;;;AAER,oBAAA,SAAS,GAAG,YAAY,CAAC,OAAK,CAAC,GAAG,OAAK,CAAC,IAAI,GAAG,oBAAoB;AACzE,oBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oBAC9C,QAAQ,CAAC,GAAG,EAAE;;;;;AAEjB,KAAA,CAAA,CAAA,EAAA;AA9CD;;;;"}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
var tslib_es6 = require('../node_modules/tslib/tslib.es6.js');
|
|
5
5
|
var React = require('react');
|
|
6
|
+
var i18nPkg = require('@smg-automotive/i18n-pkg');
|
|
6
7
|
var brand = require('../types/brand.js');
|
|
7
8
|
var session = require('../lib/enrichUser/session.js');
|
|
9
|
+
var authLinks = require('../lib/authLinks.js');
|
|
8
10
|
var useInterval = require('../hooks/useInterval.js');
|
|
9
11
|
|
|
10
12
|
var AuthContext = React.createContext({
|
|
@@ -43,6 +45,7 @@ var AuthProvider = function (_a) {
|
|
|
43
45
|
};
|
|
44
46
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
47
|
}, []);
|
|
48
|
+
var language = i18nPkg.useI18n().language;
|
|
46
49
|
var _f = React.useState({
|
|
47
50
|
config: memoizedParams.config,
|
|
48
51
|
accessToken: memoizedParams.accessToken,
|
|
@@ -52,8 +55,20 @@ var AuthProvider = function (_a) {
|
|
|
52
55
|
}), contextState = _f[0], setContextState = _f[1];
|
|
53
56
|
// Guard for cases like error pages where we don't need to set up auth handling
|
|
54
57
|
var needsAuthHandling = !!memoizedParams.config;
|
|
55
|
-
var
|
|
56
|
-
|
|
58
|
+
var handleAuthError = React.useCallback(function (error) {
|
|
59
|
+
errorHandler(error);
|
|
60
|
+
if (memoizedParams.config.debugForceTokenRefresh) {
|
|
61
|
+
// eslint-disable-next-line no-console
|
|
62
|
+
console.info('[Auth-package] Redirecting to login due to error', formatResponseError(error));
|
|
63
|
+
}
|
|
64
|
+
window.location.href = authLinks.getLoginLink({
|
|
65
|
+
auth0Config: memoizedParams.config,
|
|
66
|
+
language: language,
|
|
67
|
+
returnTo: window.location.pathname,
|
|
68
|
+
});
|
|
69
|
+
}, [errorHandler, memoizedParams.config, language]);
|
|
70
|
+
var tokenUpdateHandler = React.useCallback(function () { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
|
|
71
|
+
var tokenExpiration, refreshThreshold, isRefreshThresholdPending, isDebugForceTokenRefresh, isVisible, shouldRefresh, body, response, error_1;
|
|
57
72
|
return tslib_es6.__generator(this, function (_a) {
|
|
58
73
|
switch (_a.label) {
|
|
59
74
|
case 0:
|
|
@@ -61,11 +76,25 @@ var AuthProvider = function (_a) {
|
|
|
61
76
|
return [2 /*return*/];
|
|
62
77
|
tokenExpiration = contextState.accessTokenExpiresAt * 1000;
|
|
63
78
|
refreshThreshold = tokenExpiration - memoizedParams.config.refreshThresholdInMs;
|
|
64
|
-
|
|
65
|
-
|
|
79
|
+
isRefreshThresholdPending = refreshThreshold > Date.now();
|
|
80
|
+
isDebugForceTokenRefresh = memoizedParams.config.debugForceTokenRefresh;
|
|
81
|
+
isVisible = document.visibilityState === 'visible';
|
|
82
|
+
shouldRefresh = (!isRefreshThresholdPending || isDebugForceTokenRefresh) &&
|
|
83
|
+
isVisible &&
|
|
84
|
+
!contextState.isLoading;
|
|
85
|
+
if (!shouldRefresh) {
|
|
86
|
+
if (isDebugForceTokenRefresh) {
|
|
87
|
+
// eslint-disable-next-line no-console
|
|
88
|
+
console.info('[Auth-package] Skipping refresh', {
|
|
89
|
+
isVisible: isVisible,
|
|
90
|
+
isRefreshThresholdPending: isRefreshThresholdPending,
|
|
91
|
+
isDebugForceTokenRefresh: isDebugForceTokenRefresh,
|
|
92
|
+
isLoading: contextState.isLoading,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
66
95
|
return [2 /*return*/];
|
|
67
96
|
}
|
|
68
|
-
if (
|
|
97
|
+
if (isDebugForceTokenRefresh) {
|
|
69
98
|
// eslint-disable-next-line no-console
|
|
70
99
|
console.info('[Auth-package] Start forced token refresh', {
|
|
71
100
|
time: Date.now(),
|
|
@@ -89,18 +118,10 @@ var AuthProvider = function (_a) {
|
|
|
89
118
|
return [3 /*break*/, 5];
|
|
90
119
|
case 4:
|
|
91
120
|
error_1 = _a.sent();
|
|
92
|
-
|
|
93
|
-
// eslint-disable-next-line no-console
|
|
94
|
-
console.info('[Auth-package] Failed forced token refresh', {
|
|
95
|
-
time: Date.now(),
|
|
96
|
-
error: error_1,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
errorHandler(error_1);
|
|
100
|
-
window.location.href = memoizedParams.config.loginEndpoint;
|
|
121
|
+
handleAuthError(error_1);
|
|
101
122
|
return [2 /*return*/];
|
|
102
123
|
case 5:
|
|
103
|
-
if (
|
|
124
|
+
if (isDebugForceTokenRefresh) {
|
|
104
125
|
// eslint-disable-next-line no-console
|
|
105
126
|
console.info('[Auth-package] Successfully finished forced token refresh', {
|
|
106
127
|
time: Date.now(),
|
|
@@ -119,7 +140,13 @@ var AuthProvider = function (_a) {
|
|
|
119
140
|
return [2 /*return*/];
|
|
120
141
|
}
|
|
121
142
|
});
|
|
122
|
-
}); }
|
|
143
|
+
}); }, [
|
|
144
|
+
contextState.accessTokenExpiresAt,
|
|
145
|
+
contextState.isLoading,
|
|
146
|
+
handleAuthError,
|
|
147
|
+
memoizedParams.config,
|
|
148
|
+
needsAuthHandling,
|
|
149
|
+
]);
|
|
123
150
|
var selectTenant = React.useCallback(function (sellerId) { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
|
|
124
151
|
var response, _a, _b, _c, updatedAccessToken_1, updatedAccessTokenExpiresAt_1, userResponse, _d, _e, updatedUser, enrichedSessionUser_1, _f, error_2;
|
|
125
152
|
return tslib_es6.__generator(this, function (_g) {
|
|
@@ -184,19 +211,40 @@ var AuthProvider = function (_a) {
|
|
|
184
211
|
return [3 /*break*/, 14];
|
|
185
212
|
case 13:
|
|
186
213
|
error_2 = _g.sent();
|
|
187
|
-
|
|
188
|
-
window.location.href = memoizedParams.config.loginEndpoint;
|
|
214
|
+
handleAuthError(error_2);
|
|
189
215
|
return [2 /*return*/];
|
|
190
216
|
case 14: return [2 /*return*/];
|
|
191
217
|
}
|
|
192
218
|
});
|
|
193
|
-
}); }, [memoizedParams.config,
|
|
219
|
+
}); }, [memoizedParams.config, handleAuthError, needsAuthHandling]);
|
|
194
220
|
useInterval.useInterval({
|
|
195
221
|
callback: tokenUpdateHandler,
|
|
196
222
|
delay: typeof ((_b = memoizedParams.config) === null || _b === void 0 ? void 0 : _b.providerInterval) === 'number'
|
|
197
223
|
? (_c = memoizedParams.config) === null || _c === void 0 ? void 0 : _c.providerInterval
|
|
198
224
|
: null,
|
|
199
225
|
});
|
|
226
|
+
React.useEffect(function () {
|
|
227
|
+
var handleVisibilityChange = function () { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
|
|
228
|
+
return tslib_es6.__generator(this, function (_a) {
|
|
229
|
+
switch (_a.label) {
|
|
230
|
+
case 0:
|
|
231
|
+
if (document.visibilityState !== 'visible')
|
|
232
|
+
return [2 /*return*/];
|
|
233
|
+
// Calling an endpoint to give the browser time to load the current cookies into memory
|
|
234
|
+
return [4 /*yield*/, fetch(memoizedParams.config.userProfileEndpoint)];
|
|
235
|
+
case 1:
|
|
236
|
+
// Calling an endpoint to give the browser time to load the current cookies into memory
|
|
237
|
+
_a.sent();
|
|
238
|
+
tokenUpdateHandler();
|
|
239
|
+
return [2 /*return*/];
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}); };
|
|
243
|
+
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
244
|
+
return function () {
|
|
245
|
+
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
246
|
+
};
|
|
247
|
+
}, [tokenUpdateHandler, memoizedParams.config.userProfileEndpoint]);
|
|
200
248
|
var memoizedContext = React.useMemo(function () {
|
|
201
249
|
return {
|
|
202
250
|
user: contextState.user || null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Auth.js","sources":["../../../../src/contexts/Auth.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Auth.js","sources":["../../../../src/contexts/Auth.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;AAyCA;AACE;AACA;;AAEA;AACA;AACD;AAED;;AAEA;AAEa;AACX;;;;;;;;AASF;AAEO;;;;;;AAQL;;;AAII;AAIA;AACA;AACA;;;;AAII;;;;;AAMN;AACA;AACD;;AAGD;AAEA;;AAII;;;;AAQA;;AAEE;AACA;AACD;;;;;;;AAMH;;AAEM;;AAGA;AACA;AAEA;AAEA;;;;;;AAOF;AACE;AACA;AACA;;AAED;;;;;;AAOH;AACE;AACD;;;AAID;AAIF;;;;;;AAIQ;AAGC;;;AAEP;;;;;;;;;;;AAUA;AAGI;;AAED;;;;;;;;AASD;;AAEJ;;;;;AAEA;AACA;;AAEA;;AAED;AAED;;;;;AAEI;;;AAGE;AAIF;;;;AAGmB;;AAAX;AAIF;;AACc;AAAoB;AAApC;AAME;;AAHE;AAKN;AACE;;;;AAKI;AAGF;;AACc;AAAoB;AAApC;AAE+B;;AAA3B;AACsB;AACxB;AACE;AACA;AACA;AACD;;AAJD;;;AAKA;;;;AAEJ;;;;AAII;AACA;AACA;;AAEJ;;;;;;;;;;AASN;AACE;;AAGI;AACA;AACL;AAED;AACE;;;;AACE;;;;;;AAGA;AACA;;;;;AAGF;;AAEE;AACF;;;;AAKE;;AAEA;;AAEA;;;AAIJ;AAKF;;;"}
|
|
@@ -7,7 +7,8 @@ type GetServerAuthPropsArgs = {
|
|
|
7
7
|
isProxied: boolean;
|
|
8
8
|
brand: Brand;
|
|
9
9
|
language?: Language;
|
|
10
|
+
url?: string;
|
|
10
11
|
onError?: (error: Error) => void;
|
|
11
12
|
};
|
|
12
|
-
export declare const getServerAuthProps: ({ protocol, host, isProxied, brand, language, onError, }: GetServerAuthPropsArgs) => Promise<AuthProps>;
|
|
13
|
+
export declare const getServerAuthProps: ({ protocol, host, isProxied, brand, language, url, onError, }: GetServerAuthPropsArgs) => Promise<AuthProps>;
|
|
13
14
|
export {};
|
|
@@ -8,8 +8,8 @@ var auth0 = require('../config/auth0.js');
|
|
|
8
8
|
var getAuthProps = require('./getAuthProps.js');
|
|
9
9
|
|
|
10
10
|
var getServerAuthProps = function (_a) { return tslib_es6.__awaiter(void 0, [_a], void 0, function (_b) {
|
|
11
|
-
var auth0Instance, config, authProps, shouldRedirect, _c, error_1, authError,
|
|
12
|
-
var protocol = _b.protocol, host = _b.host, isProxied = _b.isProxied, brand = _b.brand, language = _b.language, onError = _b.onError;
|
|
11
|
+
var auth0Instance, config, authProps, shouldRedirect, _c, error_1, authError, loginLink;
|
|
12
|
+
var protocol = _b.protocol, host = _b.host, isProxied = _b.isProxied, brand = _b.brand, language = _b.language, url = _b.url, onError = _b.onError;
|
|
13
13
|
return tslib_es6.__generator(this, function (_d) {
|
|
14
14
|
switch (_d.label) {
|
|
15
15
|
case 0:
|
|
@@ -42,17 +42,20 @@ var getServerAuthProps = function (_a) { return tslib_es6.__awaiter(void 0, [_a]
|
|
|
42
42
|
error_1 = _d.sent();
|
|
43
43
|
authError = error_1;
|
|
44
44
|
onError === null || onError === void 0 ? void 0 : onError(authError);
|
|
45
|
-
shouldRedirect =
|
|
45
|
+
shouldRedirect =
|
|
46
|
+
Object.hasOwn(authError, 'code') &&
|
|
47
|
+
authError.code === 'ERR_FAILED_REFRESH_GRANT';
|
|
46
48
|
return [3 /*break*/, 4];
|
|
47
49
|
case 4:
|
|
48
50
|
if (shouldRedirect) {
|
|
49
|
-
|
|
51
|
+
loginLink = authLinks.getLoginLink({
|
|
52
|
+
returnTo: url || "/".concat(language),
|
|
50
53
|
auth0Config: authProps.config,
|
|
51
54
|
language: language,
|
|
52
55
|
});
|
|
53
56
|
// redirect internally throws an error so it should be called outside of try/catch blocks
|
|
54
57
|
// https://nextjs.org/docs/app/building-your-application/routing/redirecting#redirect-function
|
|
55
|
-
navigation.redirect(
|
|
58
|
+
navigation.redirect(loginLink);
|
|
56
59
|
}
|
|
57
60
|
return [2 /*return*/, authProps];
|
|
58
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sources":["../../../../src/getServerAuthProps/app.ts"],"sourcesContent":[null],"names":["getAuth0Instance","getAuth0Config","getAuthProps","__assign","
|
|
1
|
+
{"version":3,"file":"app.js","sources":["../../../../src/getServerAuthProps/app.ts"],"sourcesContent":[null],"names":["getAuth0Instance","getAuth0Config","getAuthProps","__assign","getLoginLink","redirect"],"mappings":";;;;;;;;;AAsBO,IAAM,kBAAkB,GAAG,2EAAO,EAQhB,EAAA;;AAPvB,IAAA,IAAA,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,SAAS,eAAA,EACT,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,GAAG,GAAA,EAAA,CAAA,GAAA,EACH,OAAO,GAAA,EAAA,CAAA,OAAA;;;;gBAED,aAAa,GAAGA,iCAAgB,CAAC;AACrC,oBAAA,QAAQ,EAAA,QAAA;AACR,oBAAA,IAAI,EAAA,IAAA;AACJ,oBAAA,SAAS,EAAA,SAAA;AACV,iBAAA,CAAC;gBACI,MAAM,GAAGC,oBAAc,CAAC,EAAE,SAAS,EAAA,SAAA,EAAE,CAAC;AACxC,gBAAA,SAAS,GAAc;AACzB,oBAAA,MAAM,EAAA,MAAA;AACN,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,oBAAoB,EAAE,IAAI;iBAC3B;gBACG,cAAc,GAAG,KAAK;;;;6CAInB,SAAS,CAAA,CAAA;AACR,gBAAA,OAAA,CAAA,CAAA,YAAMC,yBAAY,CAAC;AACrB,wBAAA,aAAa,EAAA,aAAA;AACb,wBAAA,KAAK,EAAA,KAAA;AACL,wBAAA,SAAS,EAAA,SAAA;AACV,qBAAA,CAAC,CAAA;;AANJ,gBAAA,SAAS,GAEJC,kBAAA,CAAA,KAAA,CAAA,MAAA,EAAA,EAAA,CAAA,MAAA,CAAA,EAAC,EAIF,CAAA,IAAA,EAAA,IACH;;;;gBAEK,SAAS,GAAG,OAAkB;AAEpC,gBAAA,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAG,SAAS,CAAC;gBACpB,cAAc;AACZ,oBAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;AAC/B,wBAAA,SAAuB,CAAC,IAAI,KAAK,0BAA0B;;;gBAGhE,IAAI,cAAc,EAAE;oBACZ,SAAS,GAAGC,sBAAY,CAAC;AAC7B,wBAAA,QAAQ,EAAE,GAAG,IAAI,GAAA,CAAA,MAAA,CAAI,QAAQ,CAAE;wBAC/B,WAAW,EAAE,SAAS,CAAC,MAAM;AAC7B,wBAAA,QAAQ,EAAA,QAAA;AACT,qBAAA,CAAC;;;oBAIFC,mBAAQ,CAAC,SAAS,CAAC;;AAGrB,gBAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC;;;;;;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var tslib_es6 = require('../node_modules/tslib/tslib.es6.js');
|
|
4
|
+
var getAccessToken = require('../lib/request/getAccessToken.js');
|
|
4
5
|
|
|
5
6
|
var getAuthProps = function (_a) { return tslib_es6.__awaiter(void 0, [_a], void 0, function (_b) {
|
|
6
|
-
var session, isLoggedIn, user, accessTokenExpiresAt,
|
|
7
|
+
var session, isLoggedIn, user, accessTokenExpiresAt, accessToken, enrichUser, enrichedUser, _c;
|
|
7
8
|
var auth0Instance = _b.auth0Instance, brand = _b.brand, context = _b.context, isProxied = _b.isProxied;
|
|
8
9
|
return tslib_es6.__generator(this, function (_d) {
|
|
9
10
|
switch (_d.label) {
|
|
@@ -20,28 +21,25 @@ var getAuthProps = function (_a) { return tslib_es6.__awaiter(void 0, [_a], void
|
|
|
20
21
|
}
|
|
21
22
|
user = session.user;
|
|
22
23
|
accessTokenExpiresAt = session.accessTokenExpiresAt;
|
|
23
|
-
return [4 /*yield*/,
|
|
24
|
-
case 2:
|
|
25
|
-
getAccessToken = (_d.sent()).getAccessToken;
|
|
26
|
-
return [4 /*yield*/, getAccessToken({
|
|
24
|
+
return [4 /*yield*/, getAccessToken.getAccessToken({
|
|
27
25
|
auth0Instance: auth0Instance,
|
|
28
26
|
context: context,
|
|
29
27
|
isProxied: isProxied,
|
|
30
28
|
})];
|
|
31
|
-
case
|
|
29
|
+
case 2:
|
|
32
30
|
accessToken = _d.sent();
|
|
33
31
|
return [4 /*yield*/, Promise.resolve().then(function () { return require('../lib/enrichUser/session.js'); })];
|
|
34
|
-
case
|
|
32
|
+
case 3:
|
|
35
33
|
enrichUser = (_d.sent()).enrichUser;
|
|
36
|
-
if (!accessToken) return [3 /*break*/,
|
|
34
|
+
if (!accessToken) return [3 /*break*/, 5];
|
|
37
35
|
return [4 /*yield*/, enrichUser({ user: user, accessToken: accessToken, brand: brand })];
|
|
38
|
-
case
|
|
36
|
+
case 4:
|
|
39
37
|
_c = _d.sent();
|
|
40
|
-
return [3 /*break*/,
|
|
41
|
-
case
|
|
38
|
+
return [3 /*break*/, 6];
|
|
39
|
+
case 5:
|
|
42
40
|
_c = null;
|
|
43
|
-
_d.label =
|
|
44
|
-
case
|
|
41
|
+
_d.label = 6;
|
|
42
|
+
case 6:
|
|
45
43
|
enrichedUser = _c;
|
|
46
44
|
return [2 /*return*/, {
|
|
47
45
|
user: enrichedUser,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthProps.js","sources":["../../../../src/getServerAuthProps/getAuthProps.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAuthProps.js","sources":["../../../../src/getServerAuthProps/getAuthProps.ts"],"sourcesContent":[null],"names":["getAccessToken"],"mappings":";;;;;AAUO,IAAM,YAAY,GAAG,2EAAO,EAalC,EAAA;;QAZC,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,SAAS,GAAA,EAAA,CAAA,SAAA;;;oBAUO,OAAM,CAAA,CAAA,YAAA,aAAa,CAAC,UAAU,CAAxB,KAAA,CAAA,aAAa,GAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,EACvD,CAAA;;AAFK,gBAAA,OAAO,GAAG,EAEf,CAAA,IAAA,EAAA;gBAEK,UAAU,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI;gBAE9C,IAAI,CAAC,UAAU,EAAE;oBACf,OAAO,CAAA,CAAA,aAAA;AACL,4BAAA,IAAI,EAAE,IAAI;AACV,4BAAA,WAAW,EAAE,IAAI;AACjB,4BAAA,oBAAoB,EAAE,IAAI;yBAC3B,CAAC;;AAGE,gBAAA,IAAI,GAAG,OAAO,CAAC,IAAoB;AACnC,gBAAA,oBAAoB,GAAG,OAAO,CAAC,oBAAqB;AACtC,gBAAA,OAAA,CAAA,CAAA,YAAMA,6BAAc,CAAC;AACvC,wBAAA,aAAa,EAAA,aAAA;AACb,wBAAA,OAAO,EAAA,OAAA;AACP,wBAAA,SAAS,EAAA,SAAA;AACV,qBAAA,CAAC,CAAA;;AAJI,gBAAA,WAAW,GAAG,EAIlB,CAAA,IAAA,EAAA;AAEqB,gBAAA,OAAA,CAAA,CAAA,YAAM,oDAAO,8BAA4B,KAAC,CAAA;;AAAzD,gBAAA,UAAU,GAAK,CAAA,EAA0C,CAAA,IAAA,EAAA,EAA/C,UAAA;AACG,gBAAA,IAAA,CAAA,WAAW,EAAX,OAAW,CAAA,CAAA,YAAA,CAAA,CAAA;AAC5B,gBAAA,OAAA,CAAA,CAAA,YAAM,UAAU,CAAC,EAAE,IAAI,EAAA,IAAA,EAAE,WAAW,EAAA,WAAA,EAAE,KAAK,EAAA,KAAA,EAAE,CAAC,CAAA;;AAA9C,gBAAA,EAAA,GAAA,SAA8C;;;AAC9C,gBAAA,EAAA,GAAA,IAAI;;;AAFF,gBAAA,YAAY,GAEV,EAAA;gBAER,OAAO,CAAA,CAAA,aAAA;AACL,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,WAAW,EAAA,WAAA;AACX,wBAAA,oBAAoB,EAAA,oBAAA;qBACrB,CAAC;;;;;;;"}
|
|
@@ -41,14 +41,18 @@ var getServerAuthProps = function (_a) { return tslib_es6.__awaiter(void 0, [_a]
|
|
|
41
41
|
error_1 = _e.sent();
|
|
42
42
|
authError = error_1;
|
|
43
43
|
onError === null || onError === void 0 ? void 0 : onError(authError);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
if (Object.hasOwn(authError, 'code') &&
|
|
45
|
+
authError.code === 'ERR_FAILED_REFRESH_GRANT') {
|
|
46
|
+
logoutUrl = authLinks.getLoginLink({
|
|
47
|
+
returnTo: request.url || "/".concat(language),
|
|
48
|
+
auth0Config: authProps.config,
|
|
49
|
+
language: language,
|
|
50
|
+
});
|
|
51
|
+
response.writeHead(307, {
|
|
52
|
+
Location: logoutUrl,
|
|
53
|
+
});
|
|
54
|
+
response.end();
|
|
55
|
+
}
|
|
52
56
|
return [3 /*break*/, 4];
|
|
53
57
|
case 4:
|
|
54
58
|
pagePropsWithAuthProps = tslib_es6.__assign(tslib_es6.__assign({}, pageProps), { authProps: authProps });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sources":["../../../../src/getServerAuthProps/pages.ts"],"sourcesContent":[null],"names":["getAuth0Instance","getAuth0Config","getAuthProps","__assign","
|
|
1
|
+
{"version":3,"file":"pages.js","sources":["../../../../src/getServerAuthProps/pages.ts"],"sourcesContent":[null],"names":["getAuth0Instance","getAuth0Config","getAuthProps","__assign","getLoginLink"],"mappings":";;;;;;;;AAgCO,IAAM,kBAAkB,GAAG,2EAEhC,EAWkC,EAAA;;AAVlC,IAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,QAAQ,cAAA,EACR,EAAA,GAAA,EAAA,CAAA,SAA2B,EAA3B,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,EAAe,GAAA,EAAA,EAC3B,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA;;;;gBAIH,aAAa,GAAGA,iCAAgB,CAAC;AACrC,oBAAA,IAAI,EAAA,IAAA;AACJ,oBAAA,QAAQ,EAAA,QAAA;AACR,oBAAA,SAAS,EAAA,SAAA;AACV,iBAAA,CAAC;gBACI,MAAM,GAAGC,oBAAc,CAAC,EAAE,SAAS,EAAA,SAAA,EAAE,CAAC;AACxC,gBAAA,SAAS,GAAc;AACzB,oBAAA,MAAM,EAAA,MAAA;AACN,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,oBAAoB,EAAE,IAAI;iBAC3B;;;;6CAIM,SAAS,CAAA,CAAA;AACR,gBAAA,OAAA,CAAA,CAAA,YAAMC,yBAAY,CAAC;AACrB,wBAAA,aAAa,EAAA,aAAA;AACb,wBAAA,KAAK,EAAA,KAAA;AACL,wBAAA,SAAS,EAAA,SAAA;AACT,wBAAA,OAAO,EAAE,EAAE,OAAO,SAAA,EAAE,QAAQ,UAAA,EAAE;AAC/B,qBAAA,CAAC,CAAA;;AAPJ,gBAAA,SAAS,GAEJC,kBAAA,CAAA,KAAA,CAAA,MAAA,EAAA,EAAA,CAAA,MAAA,CAAA,EAAC,EAKF,CAAA,IAAA,EAAA,IACH;;;;gBAEK,SAAS,GAAG,OAAkB;AAEpC,gBAAA,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAG,SAAS,CAAC;AACpB,gBAAA,IACE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;AAChC,oBAAA,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAC7C;oBACM,SAAS,GAAGC,sBAAY,CAAC;AAC7B,wBAAA,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,GAAA,CAAA,MAAA,CAAI,QAAQ,CAAE;wBACvC,WAAW,EAAE,SAAS,CAAC,MAAM;AAC7B,wBAAA,QAAQ,EAAA,QAAA;AACT,qBAAA,CAAC;AAEF,oBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;AACtB,wBAAA,QAAQ,EAAE,SAAS;AACpB,qBAAA,CAAC;oBACF,QAAQ,CAAC,GAAG,EAAE;;;;AAIZ,gBAAA,sBAAsB,6CACvB,SAAS,CAAA,EAAA,EACZ,SAAS,EAAA,SAAA,GACV;gBACD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;AACzD,gBAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC;;;;;;;"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { NextApiRequest, NextApiResponse } from 'next/types';
|
|
2
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
3
2
|
import type { IncomingMessage, ServerResponse } from 'http';
|
|
4
3
|
import type { GetAccessToken, GetSession } from '@auth0/nextjs-auth0';
|
|
5
4
|
type AccessTokenOptions = {
|
|
6
5
|
refresh?: boolean;
|
|
7
6
|
sellerId?: string | number;
|
|
8
7
|
};
|
|
8
|
+
type Auth0Instance = {
|
|
9
|
+
getSession: GetSession;
|
|
10
|
+
getAccessToken: GetAccessToken;
|
|
11
|
+
};
|
|
9
12
|
type GetAccessTokenArgs = {
|
|
10
|
-
auth0Instance:
|
|
11
|
-
getSession: GetSession;
|
|
12
|
-
getAccessToken: GetAccessToken;
|
|
13
|
-
};
|
|
13
|
+
auth0Instance: Auth0Instance;
|
|
14
14
|
isProxied: boolean;
|
|
15
15
|
context?: {
|
|
16
16
|
request: NextApiRequest;
|
|
@@ -18,9 +18,6 @@ type GetAccessTokenArgs = {
|
|
|
18
18
|
} | {
|
|
19
19
|
request: IncomingMessage;
|
|
20
20
|
response: ServerResponse;
|
|
21
|
-
} | {
|
|
22
|
-
request: NextRequest;
|
|
23
|
-
response: NextResponse;
|
|
24
21
|
};
|
|
25
22
|
options?: AccessTokenOptions;
|
|
26
23
|
};
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js');
|
|
4
4
|
var jose = require('jose');
|
|
5
5
|
var sessionCallbackHandler = require('./sessionCallbackHandler.js');
|
|
6
|
+
var inFlightAccessTokenCache = require('./inFlightAccessTokenCache.js');
|
|
6
7
|
|
|
7
8
|
var determineSellerIdWithFallbacks = function (_a) {
|
|
8
9
|
var sellerIdFromOptions = _a.sellerIdFromOptions, user = _a.user, accessToken = _a.accessToken;
|
|
@@ -19,21 +20,91 @@ var determineSellerIdWithFallbacks = function (_a) {
|
|
|
19
20
|
}
|
|
20
21
|
return null;
|
|
21
22
|
};
|
|
23
|
+
var cacheReleaseDelay = 2000; // 2 seconds
|
|
24
|
+
var safeCleanupAfterTTL = function (key) {
|
|
25
|
+
var tracked = inFlightAccessTokenCache.inFlightTokenRequests.get(key);
|
|
26
|
+
if (!tracked)
|
|
27
|
+
return;
|
|
28
|
+
if (tracked.count > 0) {
|
|
29
|
+
console.debug("[Auth-package] [".concat(key, "] cleanup deferred \u2014 count=").concat(tracked.count));
|
|
30
|
+
setTimeout(function () { return safeCleanupAfterTTL(key); }, 500);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
var now = Date.now();
|
|
34
|
+
var delay = tracked.expiresAt - now;
|
|
35
|
+
if (delay > 0) {
|
|
36
|
+
console.debug("[Auth-package] [".concat(key, "] delaying final cleanup by ").concat(delay, "ms"));
|
|
37
|
+
setTimeout(function () { return safeCleanupAfterTTL(key); }, delay);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
console.debug("[Auth-package] [".concat(key, "] cache expired scheduling delete"));
|
|
41
|
+
setTimeout(function () {
|
|
42
|
+
inFlightAccessTokenCache.inFlightTokenRequests.delete(key);
|
|
43
|
+
console.debug("[Auth-package] [".concat(key, "] cache expired, cleaning up after ").concat(cacheReleaseDelay, "ms"));
|
|
44
|
+
}, cacheReleaseDelay);
|
|
45
|
+
};
|
|
46
|
+
var accessTokenCacheTTL = 10000; // 10 seconds
|
|
47
|
+
var getAccessTokenWithLock = function (key, auth0Instance, accessTokenArgs) {
|
|
48
|
+
console.debug("[Auth-package] getAccessTokenWithLock called at ".concat(new Date().toISOString()));
|
|
49
|
+
var existing = inFlightAccessTokenCache.inFlightTokenRequests.get(key);
|
|
50
|
+
if (existing) {
|
|
51
|
+
existing.count++;
|
|
52
|
+
console.debug("[Auth-package] [".concat(key, "] found in cache, incrementing count to ").concat(existing.count));
|
|
53
|
+
return existing.promise.finally(function () {
|
|
54
|
+
existing.count--;
|
|
55
|
+
console.debug("[Auth-package] existing finally [".concat(key, "] consumer finished, decrementing count to ").concat(existing.count));
|
|
56
|
+
if (existing.count === 0) {
|
|
57
|
+
safeCleanupAfterTTL(key);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// First consumer creates promise and adds to cache
|
|
62
|
+
var resolve;
|
|
63
|
+
var reject;
|
|
64
|
+
var wrapperPromise = new Promise(function (res, rej) {
|
|
65
|
+
resolve = res;
|
|
66
|
+
reject = rej;
|
|
67
|
+
});
|
|
68
|
+
inFlightAccessTokenCache.inFlightTokenRequests.set(key, {
|
|
69
|
+
promise: wrapperPromise,
|
|
70
|
+
count: 1,
|
|
71
|
+
expiresAt: Date.now() + accessTokenCacheTTL, // TTL in ms
|
|
72
|
+
});
|
|
73
|
+
console.debug("[Auth-package] [".concat(key, "] not in cache, creating new promise"));
|
|
74
|
+
auth0Instance
|
|
75
|
+
.getAccessToken.apply(auth0Instance, accessTokenArgs).then(function (result) {
|
|
76
|
+
console.debug("[Auth-package] [".concat(key, "] initial consumer finished \u2014 count=1"));
|
|
77
|
+
resolve(result);
|
|
78
|
+
})
|
|
79
|
+
.catch(function (err) {
|
|
80
|
+
console.error("[Auth-package] [".concat(key, "] Auth0 error:"), err);
|
|
81
|
+
inFlightAccessTokenCache.inFlightTokenRequests.delete(key);
|
|
82
|
+
reject(err);
|
|
83
|
+
})
|
|
84
|
+
.finally(function () {
|
|
85
|
+
var tracked = inFlightAccessTokenCache.inFlightTokenRequests.get(key);
|
|
86
|
+
if (tracked) {
|
|
87
|
+
tracked.count--;
|
|
88
|
+
console.debug("[Auth-package] original finally [".concat(key, "] initial consumer finished \u2014 count=").concat(tracked.count));
|
|
89
|
+
if (tracked.count === 0) {
|
|
90
|
+
safeCleanupAfterTTL(key);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return wrapperPromise;
|
|
95
|
+
};
|
|
22
96
|
var getAccessToken = function (_a) { return tslib_es6.__awaiter(void 0, [_a], void 0, function (_b) {
|
|
23
|
-
var
|
|
97
|
+
var session, sellerIdFromOptions, sellerId, refresh, accessTokenRequest, accessTokenArgs, accessToken;
|
|
24
98
|
var auth0Instance = _b.auth0Instance, context = _b.context, _c = _b.options, options = _c === void 0 ? {} : _c, isProxied = _b.isProxied;
|
|
25
99
|
return tslib_es6.__generator(this, function (_d) {
|
|
26
100
|
switch (_d.label) {
|
|
27
|
-
case 0:
|
|
28
|
-
flatContext = context
|
|
29
|
-
? [context.request, context.response]
|
|
30
|
-
: [];
|
|
31
|
-
return [4 /*yield*/, auth0Instance.getSession.apply(auth0Instance, flatContext)];
|
|
101
|
+
case 0: return [4 /*yield*/, auth0Instance.getSession.apply(auth0Instance, (context ? [context.request, context.response] : []))];
|
|
32
102
|
case 1:
|
|
33
103
|
session = _d.sent();
|
|
34
104
|
if (!session || !session.user || !session.accessToken) {
|
|
35
105
|
return [2 /*return*/, null];
|
|
36
106
|
}
|
|
107
|
+
console.debug("[Auth-package] getAccessToken called for user ".concat(session === null || session === void 0 ? void 0 : session.user.userId, " at ").concat(new Date().toISOString()));
|
|
37
108
|
sellerIdFromOptions = (options === null || options === void 0 ? void 0 : options.sellerId) || null;
|
|
38
109
|
sellerId = determineSellerIdWithFallbacks({
|
|
39
110
|
sellerIdFromOptions: sellerIdFromOptions,
|
|
@@ -41,7 +112,7 @@ var getAccessToken = function (_a) { return tslib_es6.__awaiter(void 0, [_a], vo
|
|
|
41
112
|
accessToken: session.accessToken,
|
|
42
113
|
});
|
|
43
114
|
if (!sellerId) {
|
|
44
|
-
throw new Error("Missing seller id for user ".concat(session.user.userId));
|
|
115
|
+
throw new Error("Missing seller id for user ".concat(session === null || session === void 0 ? void 0 : session.user.userId));
|
|
45
116
|
}
|
|
46
117
|
refresh = (options === null || options === void 0 ? void 0 : options.refresh) || false;
|
|
47
118
|
accessTokenRequest = {
|
|
@@ -62,8 +133,14 @@ var getAccessToken = function (_a) { return tslib_es6.__awaiter(void 0, [_a], vo
|
|
|
62
133
|
}); },
|
|
63
134
|
};
|
|
64
135
|
accessTokenArgs = context
|
|
65
|
-
?
|
|
66
|
-
|
|
136
|
+
? [context.request, context.response, accessTokenRequest]
|
|
137
|
+
: [accessTokenRequest];
|
|
138
|
+
console.debug("[Auth-package] calling access token with args:", {
|
|
139
|
+
refreshToken: session.refreshToken,
|
|
140
|
+
refreshTokenExpiresAt: session.refreshTokenExpiresAt,
|
|
141
|
+
refresh: refresh,
|
|
142
|
+
});
|
|
143
|
+
return [4 /*yield*/, getAccessTokenWithLock("".concat(session === null || session === void 0 ? void 0 : session.user.userId, "-").concat(sellerId), auth0Instance, accessTokenArgs)];
|
|
67
144
|
case 2:
|
|
68
145
|
accessToken = (_d.sent()).accessToken;
|
|
69
146
|
return [2 /*return*/, accessToken !== null && accessToken !== void 0 ? accessToken : null];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccessToken.js","sources":["../../../../../src/lib/request/getAccessToken.ts"],"sourcesContent":[null],"names":["decodeJwt","
|
|
1
|
+
{"version":3,"file":"getAccessToken.js","sources":["../../../../../src/lib/request/getAccessToken.ts"],"sourcesContent":[null],"names":["decodeJwt","inFlightTokenRequests","__awaiter","sessionCallbackHandler"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inFlightAccessTokenCache.js","sources":["../../../../../src/lib/request/inFlightAccessTokenCache.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAOa,IAAA,qBAAqB,GAAG,IAAI,GAAG;;;;"}
|
package/dist/cjs/middleware.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare const authMiddleware: ({ request, event, isProtectedRoute, language, host, protocol, isProxied, onError, }: {
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
export declare const authMiddleware: ({ request, isProtectedRoute, language, host, protocol, isProxied, }: {
|
|
4
3
|
request: NextRequest;
|
|
5
|
-
event: NextFetchEvent;
|
|
6
4
|
isProtectedRoute: (path: string) => boolean;
|
|
7
|
-
language:
|
|
5
|
+
language: string;
|
|
8
6
|
host: string;
|
|
9
7
|
protocol: string;
|
|
10
8
|
isProxied: boolean;
|
|
11
|
-
|
|
12
|
-
}) => Promise<import("next/dist/server/web/types").NextMiddlewareResult>;
|
|
9
|
+
}) => Promise<NextResponse<unknown>>;
|