@smg-automotive/auth 7.1.0-always-mount-auth-under-proxy-segment.1 → 7.1.0-always-mount-auth-under-proxy-segment.2
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 +78 -170
- package/dist/{Auth-KOmvnSHJ.d.ts → Auth-C40nODjM.d.ts} +2 -2
- package/dist/cjs/client/contexts/Auth.d.ts +2 -2
- package/dist/cjs/client/contexts/Auth.js +4 -4
- package/dist/cjs/client/helpers/switchSelectedTenant.d.ts +2 -2
- package/dist/cjs/client/helpers/switchSelectedTenant.js +2 -2
- package/dist/cjs/client/helpers/switchSelectedTenant.js.map +1 -1
- package/dist/cjs/client/hooks/useAuthConfig.js +1 -1
- package/dist/cjs/client/hooks/useAuthConfig.js.map +1 -1
- package/dist/cjs/config/auth0.js +5 -7
- package/dist/cjs/config/auth0.js.map +1 -1
- package/dist/cjs/fixtures/authConfig.js +0 -3
- package/dist/cjs/fixtures/authConfig.js.map +1 -1
- package/dist/cjs/lib/utils.js +1 -1
- package/dist/cjs/lib/utils.js.map +1 -1
- package/dist/cjs/server/helpers/getAuthProps.js +2 -2
- package/dist/cjs/server/helpers/getAuthProps.js.map +1 -1
- package/dist/cjs/server/hooks/onCallbackFactory.js +7 -3
- package/dist/cjs/server/hooks/onCallbackFactory.js.map +1 -1
- package/dist/cjs/server/middleware/index.js +0 -8
- package/dist/cjs/server/middleware/index.js.map +1 -1
- package/dist/cjs/server/middleware/proactivelyRefreshAccessToken.d.ts +3 -1
- package/dist/cjs/server/middleware/proactivelyRefreshAccessToken.js +3 -2
- package/dist/cjs/server/middleware/proactivelyRefreshAccessToken.js.map +1 -1
- package/dist/cjs/server/middleware/protectRoute.js +1 -0
- package/dist/cjs/server/middleware/protectRoute.js.map +1 -1
- package/dist/cjs/server/middleware/token.js +1 -0
- package/dist/cjs/server/middleware/token.js.map +1 -1
- package/dist/cjs/test/mocks.js +5 -0
- package/dist/cjs/test/mocks.js.map +1 -1
- package/dist/cjs/types/auth0/config.d.ts +0 -3
- package/dist/esm/client/contexts/Auth.d.ts +2 -2
- package/dist/esm/client/contexts/Auth.js +4 -4
- package/dist/esm/client/helpers/switchSelectedTenant.d.ts +2 -2
- package/dist/esm/client/helpers/switchSelectedTenant.js +2 -2
- package/dist/esm/client/helpers/switchSelectedTenant.js.map +1 -1
- package/dist/esm/client/hooks/useAuthConfig.js +1 -1
- package/dist/esm/client/hooks/useAuthConfig.js.map +1 -1
- package/dist/esm/config/auth0.js +5 -7
- package/dist/esm/config/auth0.js.map +1 -1
- package/dist/esm/fixtures/authConfig.js +0 -3
- package/dist/esm/fixtures/authConfig.js.map +1 -1
- package/dist/esm/lib/utils.js +1 -1
- package/dist/esm/lib/utils.js.map +1 -1
- package/dist/esm/server/helpers/getAuthProps.js +2 -2
- package/dist/esm/server/helpers/getAuthProps.js.map +1 -1
- package/dist/esm/server/hooks/onCallbackFactory.js +7 -3
- package/dist/esm/server/hooks/onCallbackFactory.js.map +1 -1
- package/dist/esm/server/middleware/index.js +0 -8
- package/dist/esm/server/middleware/index.js.map +1 -1
- package/dist/esm/server/middleware/proactivelyRefreshAccessToken.d.ts +3 -1
- package/dist/esm/server/middleware/proactivelyRefreshAccessToken.js +3 -2
- package/dist/esm/server/middleware/proactivelyRefreshAccessToken.js.map +1 -1
- package/dist/esm/server/middleware/protectRoute.js +1 -0
- package/dist/esm/server/middleware/protectRoute.js.map +1 -1
- package/dist/esm/server/middleware/token.js +1 -0
- package/dist/esm/server/middleware/token.js.map +1 -1
- package/dist/esm/test/mocks.js +6 -0
- package/dist/esm/test/mocks.js.map +1 -1
- package/dist/esm/types/auth0/config.d.ts +0 -3
- package/dist/fixtures.d.ts +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/server.d.ts +2 -2
- package/dist/{sessionUser-Wd3XUk39.d.ts → sessionUser-wavMinWI.d.ts} +0 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -47,21 +47,18 @@ Example: `redis://default:devpassword123@localhost:6379`
|
|
|
47
47
|
|
|
48
48
|
The consuming project needs to enable node js middleware in next
|
|
49
49
|
|
|
50
|
-
```
|
|
50
|
+
```ts
|
|
51
51
|
// middleware.ts
|
|
52
52
|
...
|
|
53
53
|
export const config = { runtime: "nodejs" };
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
- Debug flag to force a token refresh on every interval
|
|
57
|
+
- `AUTH0_DEBUG_FORCE_TOKEN_REFRESH` - [optional] set to `true` to force a token refresh on every interval
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
### Auth Context
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
- `accessToken` - The access token.
|
|
62
|
-
- `selectTenant` - A function to change the currently selected tenant.
|
|
63
|
-
- `isLoading` - Whether the user is loading.
|
|
64
|
-
- `config` - The authentication configuration.
|
|
61
|
+
This package exposes the `AuthProvider`. It exposes the auth configuration and pre-caches the user data.
|
|
65
62
|
|
|
66
63
|
You want to include the `AuthProvider` on the top level of your application and supply the props obtained server-side from auth0. The usage varies slightly depending on the router you are using. Check out the examples below.
|
|
67
64
|
|
|
@@ -72,11 +69,11 @@ We rely on `PageProps` combined with `getInitialProps` to pass the auth props to
|
|
|
72
69
|
```tsx
|
|
73
70
|
// src/pages/_app.tsx
|
|
74
71
|
import App, { type AppContext, type AppProps } from 'next/app';
|
|
75
|
-
import { type
|
|
72
|
+
import { type AuthProviderProps, AuthProvider } from '@smg-automotive/auth';
|
|
76
73
|
|
|
77
74
|
type PageProps = {
|
|
78
75
|
// your other page props
|
|
79
|
-
authProps:
|
|
76
|
+
authProps: AuthProviderProps;
|
|
80
77
|
};
|
|
81
78
|
|
|
82
79
|
const MyApp = ({
|
|
@@ -97,27 +94,28 @@ MyApp.getInitialProps = async (appContext: AppContext) => {
|
|
|
97
94
|
|
|
98
95
|
const brand = yourBrandDerivingLogic();
|
|
99
96
|
const language = yourLanguageDerivingLogic();
|
|
100
|
-
const isProxied = yourProxyDetectionLogic();
|
|
101
97
|
const protocol = yourProtocolDetectionLogic();
|
|
102
98
|
const host = yourHostDetectionLogic();
|
|
103
99
|
|
|
104
|
-
const {
|
|
100
|
+
const { getAuthProps } = await import(
|
|
105
101
|
'@smg-automotive/auth/server'
|
|
106
102
|
);
|
|
107
|
-
|
|
108
|
-
request,
|
|
109
|
-
response,
|
|
110
|
-
appProps,
|
|
103
|
+
const authProps = await getAuthProps({
|
|
111
104
|
brand,
|
|
112
|
-
language,
|
|
113
|
-
isProxied,
|
|
114
105
|
protocol,
|
|
115
106
|
host,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
107
|
+
context: {
|
|
108
|
+
request,
|
|
109
|
+
response,
|
|
110
|
+
},
|
|
120
111
|
});
|
|
112
|
+
|
|
113
|
+
Object.assign(appProps.pageProps, {
|
|
114
|
+
...pageProps,
|
|
115
|
+
authProps,
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
return appProps;
|
|
121
119
|
};
|
|
122
120
|
|
|
123
121
|
export default MyApp;
|
|
@@ -133,30 +131,25 @@ You can pass an `errorHandler` of your choice to the `AuthProvider` to handle er
|
|
|
133
131
|
|
|
134
132
|
#### App Router
|
|
135
133
|
|
|
136
|
-
We provide `
|
|
134
|
+
We provide `getAuthProps` function to get the auth props in the app router. You'll use it in the layout component where you include the `AuthProvider`.
|
|
137
135
|
|
|
138
136
|
```tsx
|
|
139
137
|
// src/app/layout.tsx
|
|
140
138
|
import { FC, PropsWithChildren } from 'react';
|
|
141
139
|
|
|
142
140
|
import { AuthProvider } from '@smg-automotive/auth';
|
|
143
|
-
import {
|
|
141
|
+
import { getAuthProps } from '@smg-automotive/auth/server';
|
|
144
142
|
|
|
145
143
|
const Layout: FC<PropsWithChildren> = ({ children }) => {
|
|
146
144
|
const brand = yourBrandDerivingLogic();
|
|
147
145
|
const language = yourLanguageDetectionLogic();
|
|
148
|
-
const isProxied = yourProxyDetectionLogic();
|
|
149
146
|
const protocol = yourProtocolDetectionLogic();
|
|
150
147
|
const host = yourHostDetectionLogic();
|
|
151
148
|
|
|
152
|
-
const authProps = await
|
|
149
|
+
const authProps = await getAuthProps({
|
|
153
150
|
brand,
|
|
154
|
-
language,
|
|
155
|
-
isProxied,
|
|
156
151
|
protocol,
|
|
157
152
|
host,
|
|
158
|
-
// You can pass the error handler of your choice
|
|
159
|
-
// onError: Sentry.captureException,
|
|
160
153
|
});
|
|
161
154
|
|
|
162
155
|
return (
|
|
@@ -178,6 +171,37 @@ const onError = async (error) => {
|
|
|
178
171
|
};
|
|
179
172
|
```
|
|
180
173
|
|
|
174
|
+
#### Hooks and helpers
|
|
175
|
+
|
|
176
|
+
The package provides following hooks and helpers for session and user handling:
|
|
177
|
+
|
|
178
|
+
##### Client-side (exposed from `@smg-automotive/auth`)
|
|
179
|
+
- `useUser` - a hook to access the user data
|
|
180
|
+
- `useAuthConfig` - a hook to access the auth config
|
|
181
|
+
- `getAccessToken` - a helper to get the access token. It can be used in the client-side data fetching logic
|
|
182
|
+
- `switchSelectedTenant` - a helper to switch the selected tenant. It will trigger a re-login and client-side navigation
|
|
183
|
+
|
|
184
|
+
##### Server-side (exposed from `@smg-automotive/auth/server`)
|
|
185
|
+
- `isLoggedIn` - a helper to check if the user is logged in
|
|
186
|
+
- `getUser` - a helper to get the user data
|
|
187
|
+
- `getAccessToken` - a helper to get the access token for server-side data fetching
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
##### Login and logout links
|
|
191
|
+
|
|
192
|
+
This package also provides utility functions to generate login and logout links.
|
|
193
|
+
|
|
194
|
+
```ts
|
|
195
|
+
import { getLoginLink, getLogoutLink } from '@smg-automotive/auth';
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
They expect the `auth0Config` to be passed as an argument, you can obtain it from the `config` object in the auth context.
|
|
199
|
+
|
|
200
|
+
```ts
|
|
201
|
+
const auth0Config = useAuthConfig();
|
|
202
|
+
const loginLink = getLoginLink({ auth0Config });
|
|
203
|
+
```
|
|
204
|
+
|
|
181
205
|
### Protecting routes with middleware
|
|
182
206
|
|
|
183
207
|
We provide a middleware to protect routes from unauthenticated access. It will redirect to the login page if the user is not authenticated.
|
|
@@ -196,108 +220,22 @@ export default function middleware(
|
|
|
196
220
|
request: NextRequest,
|
|
197
221
|
event: NextFetchEvent,
|
|
198
222
|
) {
|
|
199
|
-
|
|
200
|
-
const language = determineLanguage(request);
|
|
201
|
-
const isProxied = yourProxyDetectionLogic();
|
|
223
|
+
const language = yourLanguageDetectionLogic();
|
|
202
224
|
const protocol = yourProtocolDetectionLogic();
|
|
203
225
|
const host = yourHostDetectionLogic();
|
|
226
|
+
const brand = yourBrandDetectionLogic();
|
|
204
227
|
|
|
205
228
|
return authMiddleware({
|
|
206
229
|
request,
|
|
207
|
-
event,
|
|
208
230
|
isProtectedRoute,
|
|
209
231
|
language,
|
|
210
|
-
isProxied,
|
|
211
232
|
protocol,
|
|
212
233
|
host,
|
|
213
|
-
// You can pass the error handler of your choice
|
|
214
|
-
// onError: Sentry.captureException,
|
|
215
234
|
});
|
|
216
235
|
}
|
|
217
236
|
```
|
|
218
237
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
### API Routes
|
|
222
|
-
|
|
223
|
-
For auth0 integration to work you need to provide api routes to handle the auth flow.
|
|
224
|
-
|
|
225
|
-
```ts
|
|
226
|
-
// pages/api/auth/[auth0].ts
|
|
227
|
-
import { NextApiRequest, NextApiResponse } from 'next';
|
|
228
|
-
import { apiRoutesHandler } from '@smg-automotive/auth/server';
|
|
229
|
-
|
|
230
|
-
export default async function handler(
|
|
231
|
-
req: NextApiRequest,
|
|
232
|
-
res: NextApiResponse,
|
|
233
|
-
) {
|
|
234
|
-
const brand = yourBrandDerivingLogic();
|
|
235
|
-
const isProxied = yourProxyDetectionLogic();
|
|
236
|
-
const protocol = yourProtocolDetectionLogic();
|
|
237
|
-
const host = yourHostDetectionLogic();
|
|
238
|
-
|
|
239
|
-
return apiRoutesHandler({
|
|
240
|
-
req,
|
|
241
|
-
res,
|
|
242
|
-
brand,
|
|
243
|
-
isProxied,
|
|
244
|
-
protocol,
|
|
245
|
-
host,
|
|
246
|
-
// You can pass the error handler of your choice (eg. Sentry)
|
|
247
|
-
// onError
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### Utility functions
|
|
253
|
-
|
|
254
|
-
#### Login and logout links
|
|
255
|
-
|
|
256
|
-
This package also provides utility functions to generate login and logout links.
|
|
257
|
-
|
|
258
|
-
```ts
|
|
259
|
-
import { getLoginLink, getLogoutLink } from '@smg-automotive/auth';
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
They expect the `auth0Config` to be passed as an argument, you can obtain it from the `config` object in the auth context.
|
|
263
|
-
|
|
264
|
-
```ts
|
|
265
|
-
const { config: auth0Config } = useAuth();
|
|
266
|
-
const loginLink = getLoginLink({ auth0Config });
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
#### Session helpers
|
|
270
|
-
|
|
271
|
-
For simplifying session handling on the server side we provide two helpers one to get the user and one to get the user and access tokens
|
|
272
|
-
The functions share the same interface, the `getUser` function is non invasive and will return null if no user is present
|
|
273
|
-
In comparison `getUserAndAccessToken` with trow errors and attempt to refresh the access token in case it's expired
|
|
274
|
-
|
|
275
|
-
```ts
|
|
276
|
-
import { getUserAndAccessToken } from '@smg-automotive/auth';
|
|
277
|
-
import { getUser } from '@smg-automotive/auth';
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
The function expects the following arguments:
|
|
281
|
-
|
|
282
|
-
- `protocol` - The protocol of the request.
|
|
283
|
-
- `host` - The host of the request.
|
|
284
|
-
- `isProxied` - Whether the request is proxied.
|
|
285
|
-
- `context` - Request & Response objects (optionally, for pages router)
|
|
286
|
-
|
|
287
|
-
The function will return the user and access token and will throw an error if the user is not authenticated.
|
|
288
|
-
|
|
289
|
-
To guard against the errors you can use the `isLoggedIn` helper. It guarantees the presence of the user object in the session.
|
|
290
|
-
|
|
291
|
-
```ts
|
|
292
|
-
import { isLoggedIn } from '@smg-automotive/auth/server';
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
The function expects the following arguments:
|
|
296
|
-
|
|
297
|
-
- `protocol` - The protocol of the request.
|
|
298
|
-
- `host` - The host of the request.
|
|
299
|
-
- `isProxied` - Whether the request is proxied.
|
|
300
|
-
- `context` - Request & Response objects (optionally, for pages router)
|
|
238
|
+
Auth0 integration routes are handled by the middleware. You need to make sure that the middleware is invoked for all the route patters except the static assets, image optimisation and metadata files.
|
|
301
239
|
|
|
302
240
|
### Fixtures
|
|
303
241
|
|
|
@@ -325,66 +263,36 @@ import {
|
|
|
325
263
|
|
|
326
264
|
### Test environment setup
|
|
327
265
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
```ts
|
|
333
|
-
// jest.config.ts
|
|
334
|
-
export default {
|
|
335
|
-
// rest of your config
|
|
336
|
-
moduleNameMapper: {
|
|
337
|
-
'^jose': require.resolve('jose'),
|
|
338
|
-
'^@panva/hkdf': require.resolve('@panva/hkdf'),
|
|
339
|
-
},
|
|
340
|
-
};
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
#### Mock the `oauth4webapi` package
|
|
266
|
+
#### Environment extension
|
|
267
|
+
Ensure that `TextEncoder`, `TextDecoder` and `fetch` are available in the test environment.
|
|
268
|
+
To make this easier we expose a `@smg-automotive/auth/test/environment-setup` module that you can add to jest setup:
|
|
344
269
|
|
|
345
270
|
```js
|
|
346
|
-
//
|
|
347
|
-
|
|
348
|
-
|
|
271
|
+
// jest.config.js
|
|
272
|
+
const jestConfig = {
|
|
273
|
+
setupFilesAfterEnv: ['@smg-automotive/auth/test/environment-setup'],
|
|
349
274
|
};
|
|
350
275
|
```
|
|
351
276
|
|
|
352
|
-
####
|
|
277
|
+
#### ESM modules transpilation
|
|
353
278
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
const {
|
|
357
|
-
TextEncoder: ImportedTextEncoder,
|
|
358
|
-
TextDecoder: ImportedTextDecoder,
|
|
359
|
-
} = require('util');
|
|
360
|
-
|
|
361
|
-
Object.assign(global, {
|
|
362
|
-
TextEncoder: ImportedTextEncoder,
|
|
363
|
-
TextDecoder: ImportedTextDecoder,
|
|
364
|
-
});
|
|
365
|
-
```
|
|
279
|
+
`auth0/nextjs-auth0` and some other transient dependencies are now pure ESM modules. Unfortunately, `jset` still struggles with ESM support, and when using `next/jest` the setup is quite challenging.
|
|
280
|
+
To that end we expose a `@smg-automotive/auth/test/setup` that can whitelist the required ESM modules for transpilation.
|
|
366
281
|
|
|
367
|
-
```
|
|
368
|
-
// jest.config.
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
};
|
|
373
|
-
```
|
|
282
|
+
```js
|
|
283
|
+
// jest.config.js
|
|
284
|
+
const nextJest = require('next/jest.js');
|
|
285
|
+
const {
|
|
286
|
+
transpileESMModulesForJest,
|
|
287
|
+
} = require('@smg-automotive/auth/test/setup');
|
|
374
288
|
|
|
375
|
-
|
|
289
|
+
const createJestConfig = nextJest({ dir: './' });
|
|
376
290
|
|
|
377
|
-
|
|
378
|
-
//
|
|
379
|
-
import 'whatwg-fetch';
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
```ts
|
|
383
|
-
// jest.config.ts
|
|
384
|
-
export default {
|
|
385
|
-
// rest of your config
|
|
386
|
-
setupFilesAfterEnv: ['<rootDir>/.jest/setup/fetch.ts'],
|
|
291
|
+
const customJestConfig = {
|
|
292
|
+
// your custom jest config
|
|
387
293
|
};
|
|
294
|
+
|
|
295
|
+
module.exports = transpileESMModulesForJest(createJestConfig(customJestConfig));
|
|
388
296
|
```
|
|
389
297
|
|
|
390
298
|
#### Ensure you have configuration of the test environment
|
|
@@ -395,7 +303,7 @@ All required [configuration variables](#configuration) need to be set and loaded
|
|
|
395
303
|
|
|
396
304
|
You can link your local npm package to integrate it with any local project:
|
|
397
305
|
|
|
398
|
-
```
|
|
306
|
+
```bash
|
|
399
307
|
cd smg-automotive-auth-pkg
|
|
400
308
|
npm run build
|
|
401
309
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FC, PropsWithChildren } from 'react';
|
|
2
|
-
import { A as Auth0Config, E as EnrichedSessionUser } from './sessionUser-
|
|
2
|
+
import { A as Auth0Config, E as EnrichedSessionUser } from './sessionUser-wavMinWI.js';
|
|
3
3
|
|
|
4
4
|
type AuthProviderProps = {
|
|
5
|
-
|
|
5
|
+
auth0Config: Auth0Config;
|
|
6
6
|
user: EnrichedSessionUser | null;
|
|
7
7
|
};
|
|
8
8
|
declare const AuthProvider: FC<PropsWithChildren<AuthProviderProps>>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React, { FC, PropsWithChildren } from 'react';
|
|
2
2
|
import { Auth0Config, EnrichedSessionUser } from 'src/types';
|
|
3
3
|
type AuthContextType = {
|
|
4
|
-
|
|
4
|
+
auth0Config: Auth0Config;
|
|
5
5
|
};
|
|
6
6
|
export declare const AuthContext: React.Context<AuthContextType | null>;
|
|
7
7
|
export type AuthProviderProps = {
|
|
8
|
-
|
|
8
|
+
auth0Config: Auth0Config;
|
|
9
9
|
user: EnrichedSessionUser | null;
|
|
10
10
|
};
|
|
11
11
|
export declare const AuthProvider: FC<PropsWithChildren<AuthProviderProps>>;
|
|
@@ -5,16 +5,16 @@ var useSWR = require('swr');
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
|
|
7
7
|
const AuthContext = React.createContext(null);
|
|
8
|
-
const AuthProvider = ({ children,
|
|
8
|
+
const AuthProvider = ({ children, auth0Config, user, }) => {
|
|
9
9
|
const memoizedContext = React.useMemo(() => {
|
|
10
10
|
return {
|
|
11
|
-
|
|
11
|
+
auth0Config,
|
|
12
12
|
};
|
|
13
|
-
}, [
|
|
13
|
+
}, [auth0Config]);
|
|
14
14
|
return (React.createElement(useSWR.SWRConfig, { value: {
|
|
15
15
|
fallback: user
|
|
16
16
|
? {
|
|
17
|
-
[
|
|
17
|
+
[auth0Config.userProfileEndpoint]: user,
|
|
18
18
|
}
|
|
19
19
|
: {},
|
|
20
20
|
} },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Auth0Config } from 'src/types';
|
|
2
|
-
export declare const switchSelectedTenant: ({
|
|
3
|
-
|
|
2
|
+
export declare const switchSelectedTenant: ({ auth0Config, sellerId, }: {
|
|
3
|
+
auth0Config: Auth0Config;
|
|
4
4
|
sellerId: string;
|
|
5
5
|
}) => Promise<void>;
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
var authLinks = require('../../lib/authLinks.js');
|
|
4
4
|
|
|
5
|
-
const switchSelectedTenant = async ({
|
|
5
|
+
const switchSelectedTenant = async ({ auth0Config, sellerId, }) => {
|
|
6
6
|
const location = window.location;
|
|
7
7
|
const returnTo = location.pathname + location.search + location.hash;
|
|
8
8
|
const loginUrl = authLinks.getLoginLink({
|
|
9
9
|
returnTo,
|
|
10
|
-
auth0Config
|
|
10
|
+
auth0Config,
|
|
11
11
|
selectedSellerId: sellerId,
|
|
12
12
|
});
|
|
13
13
|
window.location.href = loginUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchSelectedTenant.js","sources":["../../../../../src/client/helpers/switchSelectedTenant.ts"],"sourcesContent":[null],"names":["getLoginLink"],"mappings":";;;;AAGO,MAAM,oBAAoB,GAAG,OAAO,EACzC,
|
|
1
|
+
{"version":3,"file":"switchSelectedTenant.js","sources":["../../../../../src/client/helpers/switchSelectedTenant.ts"],"sourcesContent":[null],"names":["getLoginLink"],"mappings":";;;;AAGO,MAAM,oBAAoB,GAAG,OAAO,EACzC,WAAW,EACX,QAAQ,GAIT,KAAI;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI;IAEpE,MAAM,QAAQ,GAAGA,sBAAY,CAAC;QAC5B,QAAQ;QACR,WAAW;AACX,QAAA,gBAAgB,EAAE,QAAQ;AAC3B,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ;AACjC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthConfig.js","sources":["../../../../../src/client/hooks/useAuthConfig.ts"],"sourcesContent":[null],"names":["useContext","AuthContext"],"mappings":";;;;;AAIO,MAAM,aAAa,GAAG,MAAK;AAChC,IAAA,MAAM,OAAO,GAAGA,gBAAU,CAACC,gBAAW,CAAC;IAEvC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;IACtE;IAEA,OAAO,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"useAuthConfig.js","sources":["../../../../../src/client/hooks/useAuthConfig.ts"],"sourcesContent":[null],"names":["useContext","AuthContext"],"mappings":";;;;;AAIO,MAAM,aAAa,GAAG,MAAK;AAChC,IAAA,MAAM,OAAO,GAAGA,gBAAU,CAACC,gBAAW,CAAC;IAEvC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;IACtE;IAEA,OAAO,OAAO,CAAC,WAAW;AAC5B;;;;"}
|
package/dist/cjs/config/auth0.js
CHANGED
|
@@ -15,6 +15,7 @@ const audience = utils.ensureString(process.env.AUTH0_AUDIENCE);
|
|
|
15
15
|
const authCookieNames = utils.ensureString(process.env.AUTH0_CUSTOM_AUTH_COOKIE_NAMES)
|
|
16
16
|
.split(',')
|
|
17
17
|
.filter(Boolean);
|
|
18
|
+
const debugForceTokenRefresh = process.env.AUTH0_DEBUG_FORCE_TOKEN_REFRESH === 'true';
|
|
18
19
|
if (!defaultLocale) {
|
|
19
20
|
throw new Error('[Auth-package] DEFAULT_LOCALE is not set');
|
|
20
21
|
}
|
|
@@ -33,18 +34,12 @@ const auth0Config = {
|
|
|
33
34
|
callbackEndpoint: '/api/auth/callback',
|
|
34
35
|
// Endpoint to fetch user profile
|
|
35
36
|
userProfileEndpoint: '/api/auth/profile',
|
|
36
|
-
// Interval delay to check if the token needs to be refreshed
|
|
37
|
-
intervalDelayInMs: 10000,
|
|
38
|
-
// If the token is valid for less than the specified time to app will rotate the token
|
|
39
|
-
refreshThresholdInMs: 300000,
|
|
40
37
|
// Segment to prefix on request when run in environments with a reverse proxy
|
|
41
38
|
proxyPathSegment: '',
|
|
42
39
|
// Legacy access token name
|
|
43
40
|
legacyAccessTokenName: '',
|
|
44
41
|
// Legacy refresh token name
|
|
45
42
|
legacyRefreshTokenName: '',
|
|
46
|
-
// Interval in MS to call function that checks if the token needs to be refreshed
|
|
47
|
-
providerInterval: 10000,
|
|
48
43
|
// Debug flag to force a token refresh on every interval
|
|
49
44
|
debugForceTokenRefresh: false,
|
|
50
45
|
// Language configuration
|
|
@@ -87,10 +82,13 @@ const auth0Config = {
|
|
|
87
82
|
};
|
|
88
83
|
const getAuth0Config = () => {
|
|
89
84
|
const runtimeConfig = { ...auth0Config };
|
|
90
|
-
runtimeConfig.proxyPathSegment =
|
|
85
|
+
runtimeConfig.proxyPathSegment = proxyPathSegment
|
|
86
|
+
? utils.ensureSlash(proxyPathSegment)
|
|
87
|
+
: '';
|
|
91
88
|
runtimeConfig.legacyAccessTokenName = legacyAccessTokenName;
|
|
92
89
|
runtimeConfig.legacyRefreshTokenName = legacyRefreshTokenName;
|
|
93
90
|
runtimeConfig.selectedSellerIdCookie.secure = !isDevelopmentEnvironment;
|
|
91
|
+
runtimeConfig.debugForceTokenRefresh = debugForceTokenRefresh;
|
|
94
92
|
return {
|
|
95
93
|
...runtimeConfig,
|
|
96
94
|
loginEndpoint: `${runtimeConfig.proxyPathSegment}${runtimeConfig.loginEndpoint}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth0.js","sources":["../../../../src/config/auth0.ts"],"sourcesContent":[null],"names":["ensureString","ensureSlash"],"mappings":";;;;AAKA,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,aAAa;AACzE,MAAM,gBAAgB,GAAGA,kBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAE7E,MAAM,qBAAqB,GAAGA,kBAAY,CACxC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAClD;AACD,MAAM,sBAAsB,GAAGA,kBAAY,CACzC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CACnD;AAED,MAAM,aAAa,GAAGA,kBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAa;AAC1E,MAAM,gBAAgB,GAAGA,kBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB;KAChE,KAAK,CAAC,GAAG;KACT,MAAM,CAAC,OAAO,CAAe;AAEhC,MAAM,iBAAiB,GAAGA,kBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACtE,MAAM,QAAQ,GAAGA,kBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAEzD,MAAM,eAAe,GAAGA,kBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B;KAC5E,KAAK,CAAC,GAAG;KACT,MAAM,CAAC,OAAO,CAAC;AAElB,IAAI,CAAC,aAAa,EAAE;AAClB,IAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AAC7D;AAEA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,IAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAChE;AAEA,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAE1C,MAAM,WAAW,GAAgB;;AAE/B,IAAA,aAAa,EAAE,iBAAiB;;AAEhC,IAAA,cAAc,EAAE,kBAAkB;;AAElC,IAAA,aAAa,EAAE,wBAAwB;;AAEvC,IAAA,gBAAgB,EAAE,oBAAoB;;AAEtC,IAAA,mBAAmB,EAAE,mBAAmB;;AAExC,IAAA,
|
|
1
|
+
{"version":3,"file":"auth0.js","sources":["../../../../src/config/auth0.ts"],"sourcesContent":[null],"names":["ensureString","ensureSlash"],"mappings":"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"}
|
|
@@ -7,8 +7,6 @@ const authConfig = (args = {}) => ({
|
|
|
7
7
|
tokenEndpoint: '/api/auth/token',
|
|
8
8
|
callbackEndpoint: '/api/auth/callback',
|
|
9
9
|
userProfileEndpoint: '/api/auth/me',
|
|
10
|
-
intervalDelayInMs: 10000,
|
|
11
|
-
refreshThresholdInMs: 300000,
|
|
12
10
|
sessionDuration,
|
|
13
11
|
selectedSellerIdCookie: {
|
|
14
12
|
name: 'selectedSellerId',
|
|
@@ -29,7 +27,6 @@ const authConfig = (args = {}) => ({
|
|
|
29
27
|
proxyPathSegment: '/testproxypath',
|
|
30
28
|
legacyAccessTokenName: 'dummy_at_int',
|
|
31
29
|
legacyRefreshTokenName: 'dummy_rt_int',
|
|
32
|
-
providerInterval: 10000,
|
|
33
30
|
debugForceTokenRefresh: false,
|
|
34
31
|
languageConfig: {
|
|
35
32
|
default: 'de',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authConfig.js","sources":["../../../../src/fixtures/authConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEnC,MAAM,UAAU,GAAG,CAAC,OAA6B,EAAE,MAAmB;AAC3E,IAAA,aAAa,EAAE,iBAAiB;AAChC,IAAA,cAAc,EAAE,kBAAkB;AAClC,IAAA,aAAa,EAAE,iBAAiB;AAChC,IAAA,gBAAgB,EAAE,oBAAoB;AACtC,IAAA,mBAAmB,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"authConfig.js","sources":["../../../../src/fixtures/authConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEnC,MAAM,UAAU,GAAG,CAAC,OAA6B,EAAE,MAAmB;AAC3E,IAAA,aAAa,EAAE,iBAAiB;AAChC,IAAA,cAAc,EAAE,kBAAkB;AAClC,IAAA,aAAa,EAAE,iBAAiB;AAChC,IAAA,gBAAgB,EAAE,oBAAoB;AACtC,IAAA,mBAAmB,EAAE,cAAc;IACnC,eAAe;AACf,IAAA,sBAAsB,EAAE;AACtB,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,eAAe;AACvB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,GAAG;AACV,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;AACnB,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,GAAG;AACV,KAAA;AACD,IAAA,gBAAgB,EAAE,gBAAgB;AAClC,IAAA,qBAAqB,EAAE,cAAc;AACrC,IAAA,sBAAsB,EAAE,cAAc;AACtC,IAAA,sBAAsB,EAAE,KAAK;AAC7B,IAAA,cAAc,EAAE;AACd,QAAA,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpC,KAAA;AACD,IAAA,MAAM,EAAE,mDAAmD;AAC3D,IAAA,mBAAmB,EAAE,cAAc;AACnC,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,iBAAiB,EAAE,SAAS;AAC5B,IAAA,QAAQ,EAAE,iDAAiD;AAC3D,IAAA,GAAG,IAAI;AACR,CAAA;;;;"}
|
package/dist/cjs/lib/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/lib/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAO,MAAM,YAAY,GAAG,CAAC,KAAyB,KAAI;AACxD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,KAAK;AACd;AAEO,MAAM,WAAW,GAAG,CAAC,IAAY,KAAI;
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/lib/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAO,MAAM,YAAY,GAAG,CAAC,KAAyB,KAAI;AACxD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,KAAK;AACd;AAEO,MAAM,WAAW,GAAG,CAAC,IAAY,KAAI;AAC1C,IAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACxB,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;AACnB;;;;;"}
|
|
@@ -4,9 +4,9 @@ var auth0 = require('../../config/auth0.js');
|
|
|
4
4
|
var getUser = require('./getUser.js');
|
|
5
5
|
|
|
6
6
|
const getAuthProps = async (context) => {
|
|
7
|
-
const
|
|
7
|
+
const auth0Config = auth0.getAuth0Config();
|
|
8
8
|
const user = await getUser.getEnrichedUser(context);
|
|
9
|
-
return {
|
|
9
|
+
return { auth0Config, user };
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
exports.getAuthProps = getAuthProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthProps.js","sources":["../../../../../src/server/helpers/getAuthProps.ts"],"sourcesContent":[null],"names":["getAuth0Config","getEnrichedUser"],"mappings":";;;;;MAWa,YAAY,GAAG,OAC1B,OAMC,KAC6B;AAC9B,IAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"getAuthProps.js","sources":["../../../../../src/server/helpers/getAuthProps.ts"],"sourcesContent":[null],"names":["getAuth0Config","getEnrichedUser"],"mappings":";;;;;MAWa,YAAY,GAAG,OAC1B,OAMC,KAC6B;AAC9B,IAAA,MAAM,WAAW,GAAGA,oBAAc,EAAE;AACpC,IAAA,MAAM,IAAI,GAAG,MAAMC,uBAAe,CAAC,OAAO,CAAC;AAE3C,IAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE;AAC9B;;;;"}
|
|
@@ -19,8 +19,8 @@ const getLocaleFromContext = ({ returnTo }, appBaseUrl) => {
|
|
|
19
19
|
}
|
|
20
20
|
return '';
|
|
21
21
|
};
|
|
22
|
-
const errorCodeRegex = /\(([^)(]+)\)/;
|
|
23
22
|
const incompleteTokenErrorCode = 'ERR_INCOMPLETE_TOKEN';
|
|
23
|
+
const errorCodeRegex = /\b([A-Z][A-Z0-9_]*[A-Z0-9])\b/g;
|
|
24
24
|
const handleAuth0Error = ({ error, auth0Config, appBaseUrl, localeFromUrl, onError, }) => {
|
|
25
25
|
const authorizedLocales = auth0Config.languageConfig.supported;
|
|
26
26
|
const locale = authorizedLocales.includes(localeFromUrl)
|
|
@@ -31,8 +31,12 @@ const handleAuth0Error = ({ error, auth0Config, appBaseUrl, localeFromUrl, onErr
|
|
|
31
31
|
'INITIAL_UNVERIFIED_EMAIL',
|
|
32
32
|
incompleteTokenErrorCode,
|
|
33
33
|
];
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
let extractedErrorCode = '';
|
|
35
|
+
if (error.cause) {
|
|
36
|
+
const cause = error.cause;
|
|
37
|
+
const matchedErrorCode = cause.message.match(errorCodeRegex);
|
|
38
|
+
extractedErrorCode = matchedErrorCode ? matchedErrorCode[0] : '';
|
|
39
|
+
}
|
|
36
40
|
if (extractedErrorCode === incompleteTokenErrorCode) {
|
|
37
41
|
// eslint-disable-next-line no-console
|
|
38
42
|
console.info('[Auth-package] logging out user CAUSE: ERR_INCOMPLETE_TOKEN');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onCallbackFactory.js","sources":["../../../../../src/server/hooks/onCallbackFactory.ts"],"sourcesContent":[null],"names":["NextResponse","cookies","decodeJwt"],"mappings":";;;;;;AASA,MAAM,sBAAsB,GAAG,CAC7B,OAA0B,EAC1B,UAAkB,KACfA,mBAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,UAAU,CAAC,CAAC;AAExE,MAAM,oBAAoB,GAAG,CAC3B,EAAE,QAAQ,EAAqB,EAC/B,UAAkB,KAChB;IACF,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;IAC7E;IAAE,OAAO,YAAY,EAAE;;AAErB,QAAA,OAAO,CAAC,IAAI,CACV,qDAAqD,EACrD,YAAY,CACb;IACH;AAEA,IAAA,OAAO,EAAE;AACX,CAAC;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"onCallbackFactory.js","sources":["../../../../../src/server/hooks/onCallbackFactory.ts"],"sourcesContent":[null],"names":["NextResponse","cookies","decodeJwt"],"mappings":"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"}
|
|
@@ -28,14 +28,6 @@ const authMiddleware = async ({ request, isProtectedRoute, language, host, proto
|
|
|
28
28
|
});
|
|
29
29
|
const auth0Config = auth0.getAuth0Config();
|
|
30
30
|
const isAuthErrorRoute = pathname.endsWith(auth0Config.globalAuthErrorPath);
|
|
31
|
-
// eslint-disable-next-line no-console
|
|
32
|
-
console.log('[auth middleware]', {
|
|
33
|
-
path: pathname,
|
|
34
|
-
host,
|
|
35
|
-
isProtectedRoute: isProtectedRoute(pathname),
|
|
36
|
-
isAuthRoute: isAuthRoute(pathname, auth0Config),
|
|
37
|
-
isAuthErrorRoute,
|
|
38
|
-
});
|
|
39
31
|
const crossDomainLogoutResult = logout.handleCrossDomainLogout({
|
|
40
32
|
host,
|
|
41
33
|
protocol,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/server/middleware/index.ts"],"sourcesContent":[null],"names":["getAuth0Instance","getAuth0Config","handleCrossDomainLogout","addLoginParamsFromCookies","setLoginRelatedCookies","deleteRelatedSessionCookies","handleAccessTokenRequest","handleUserProfile","protectRoute","combineHeaders","NextResponse"],"mappings":";;;;;;;;;;;;AAeA,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,WAAwB,KAAI;AACjE,IAAA,MAAM,EACJ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,GAAG,WAAW;IAEf,OAAO;QACL,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,aAAa;AACd,KAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtB,CAAC;MAEY,cAAc,GAAG,OAAO,EACnC,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,KAAK,GASN,KAA2B;AAC1B,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO;IACpC,MAAM,aAAa,GAAGA,iCAAgB,CAAC;QACrC,IAAI;QACJ,QAAQ;AACT,KAAA,CAAC;AAEF,IAAA,MAAM,WAAW,GAAGC,oBAAc,EAAE;IACpC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/server/middleware/index.ts"],"sourcesContent":[null],"names":["getAuth0Instance","getAuth0Config","handleCrossDomainLogout","addLoginParamsFromCookies","setLoginRelatedCookies","deleteRelatedSessionCookies","handleAccessTokenRequest","handleUserProfile","protectRoute","combineHeaders","NextResponse"],"mappings":";;;;;;;;;;;;AAeA,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,WAAwB,KAAI;AACjE,IAAA,MAAM,EACJ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GACd,GAAG,WAAW;IAEf,OAAO;QACL,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,aAAa;AACd,KAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtB,CAAC;MAEY,cAAc,GAAG,OAAO,EACnC,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,KAAK,GASN,KAA2B;AAC1B,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO;IACpC,MAAM,aAAa,GAAGA,iCAAgB,CAAC;QACrC,IAAI;QACJ,QAAQ;AACT,KAAA,CAAC;AAEF,IAAA,MAAM,WAAW,GAAGC,oBAAc,EAAE;IACpC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC;IAE3E,MAAM,uBAAuB,GAAGC,8BAAuB,CAAC;QACtD,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,WAAW;AACZ,KAAA,CAAC;IACF,IAAI,uBAAuB,EAAE;AAC3B,QAAA,OAAO,uBAAuB;IAChC;AAEA,IAAAC,+BAAyB,CAAC;QACxB,OAAO;QACP,WAAW;AACZ,KAAA,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;AAE5D,IAAAC,4BAAsB,CAAC;QACrB,OAAO;AACP,QAAA,QAAQ,EAAE,YAAY;QACtB,WAAW;AACZ,KAAA,CAAC;AAEF,IAAAC,kCAA2B,CAAC;QAC1B,IAAI;QACJ,OAAO;AACP,QAAA,QAAQ,EAAE,YAAY;QACtB,WAAW;AACZ,KAAA,CAAC;AAEF,IAAA,MAAM,wBAAwB,GAAG,MAAMC,8BAAwB,CAAC;QAC9D,OAAO;AACP,QAAA,QAAQ,EAAE,YAAY;QACtB,aAAa;QACb,WAAW;QACX,OAAO;AACR,KAAA,CAAC;IACF,IAAI,wBAAwB,EAAE;AAC5B,QAAA,OAAO,wBAAwB;IACjC;AAEA,IAAA,MAAM,uBAAuB,GAAG,MAAMC,yBAAiB,CAAC;QACtD,OAAO;QACP,aAAa;QACb,WAAW;QACX,KAAK;AACN,KAAA,CAAC;IACF,IAAI,uBAAuB,EAAE;AAC3B,QAAA,OAAO,uBAAuB;IAChC;IAEA,IAAI,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,gBAAgB,EAAE;AAC1D,QAAA,OAAO,YAAY;IACrB;IAEA,MAAM,WAAW,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,CAAC;AACnE,IAAA,MAAM,kBAAkB,GAAG,MAAMC,yBAAY,CAAC;QAC5C,WAAW;QACX,aAAa;QACb,WAAW;QACX,QAAQ;QACR,OAAO;AACP,QAAA,QAAQ,EAAE,YAAY;QACtB,OAAO;AACR,KAAA,CAAC;IACF,IAAI,kBAAkB,EAAE;AACtB,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,OAAOC,6BAAc,CAAC;AACpB,QAAA,kBAAkB,EAAEC,mBAAY,CAAC,IAAI,CAAC;AACpC,YAAA,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,aAAA;SACF,CAAC;QACF,YAAY;AACb,KAAA,CAAC;AACJ;;;;"}
|