@akinon/next 1.91.0 → 1.92.0-rc.11
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/CHANGELOG.md +1211 -44
- package/components/accordion.tsx +20 -5
- package/components/file-input.tsx +65 -3
- package/components/input.tsx +2 -0
- package/components/link.tsx +16 -12
- package/components/modal.tsx +32 -16
- package/components/plugin-module.tsx +13 -3
- package/components/selected-payment-option-view.tsx +11 -0
- package/data/server/basket.ts +72 -0
- package/hocs/server/with-segment-defaults.tsx +5 -2
- package/hooks/use-loyalty-availability.ts +21 -0
- package/instrumentation/node.ts +15 -13
- package/lib/cache.ts +2 -0
- package/middlewares/checkout-provider.ts +1 -1
- package/middlewares/complete-gpay.ts +2 -1
- package/middlewares/complete-masterpass.ts +2 -1
- package/middlewares/default.ts +196 -184
- package/middlewares/index.ts +3 -1
- package/middlewares/locale.ts +9 -1
- package/middlewares/redirection-payment.ts +2 -1
- package/middlewares/saved-card-redirection.ts +2 -1
- package/middlewares/three-d-redirection.ts +2 -1
- package/middlewares/url-redirection.ts +9 -15
- package/middlewares/wallet-complete-redirection.ts +179 -0
- package/package.json +3 -3
- package/plugins.d.ts +2 -0
- package/plugins.js +3 -1
- package/redux/middlewares/checkout.ts +15 -2
- package/redux/reducers/checkout.ts +9 -1
- package/sentry/index.ts +54 -17
- package/types/commerce/order.ts +1 -0
- package/types/index.ts +28 -1
- package/utils/app-fetch.ts +2 -2
- package/utils/redirect-ignore.ts +35 -0
- package/utils/redirect.ts +27 -9
- package/with-pz-config.js +1 -5
package/middlewares/default.ts
CHANGED
|
@@ -11,7 +11,8 @@ import {
|
|
|
11
11
|
withRedirectionPayment,
|
|
12
12
|
withSavedCardRedirection,
|
|
13
13
|
withThreeDRedirection,
|
|
14
|
-
withUrlRedirection
|
|
14
|
+
withUrlRedirection,
|
|
15
|
+
withWalletCompleteRedirection
|
|
15
16
|
} from '.';
|
|
16
17
|
import { urlLocaleMatcherRegex } from '../utils';
|
|
17
18
|
import withCurrency from './currency';
|
|
@@ -228,144 +229,168 @@ const withPzDefault =
|
|
|
228
229
|
withCompleteGpay(
|
|
229
230
|
withCompleteMasterpass(
|
|
230
231
|
withSavedCardRedirection(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
let customRewriteUrlDiff = '';
|
|
250
|
-
|
|
251
|
-
if (
|
|
252
|
-
middlewareResult instanceof NextResponse &&
|
|
253
|
-
middlewareResult.headers.get(
|
|
254
|
-
'pz-override-response'
|
|
255
|
-
) &&
|
|
256
|
-
middlewareResult.headers.get(
|
|
257
|
-
'x-middleware-rewrite'
|
|
258
|
-
)
|
|
259
|
-
) {
|
|
260
|
-
const rewriteUrl = new URL(
|
|
261
|
-
middlewareResult.headers.get(
|
|
262
|
-
'x-middleware-rewrite'
|
|
263
|
-
)
|
|
264
|
-
);
|
|
265
|
-
const originalUrl = new URL(req.url);
|
|
266
|
-
customRewriteUrlDiff =
|
|
267
|
-
rewriteUrl.pathname.replace(
|
|
268
|
-
originalUrl.pathname,
|
|
232
|
+
withWalletCompleteRedirection(
|
|
233
|
+
async (
|
|
234
|
+
req: PzNextRequest,
|
|
235
|
+
event: NextFetchEvent
|
|
236
|
+
) => {
|
|
237
|
+
let middlewareResult: NextResponse | void =
|
|
238
|
+
NextResponse.next();
|
|
239
|
+
|
|
240
|
+
try {
|
|
241
|
+
const { locale, prettyUrl, currency } =
|
|
242
|
+
req.middlewareParams.rewrites;
|
|
243
|
+
const { defaultLocaleValue } =
|
|
244
|
+
Settings.localization;
|
|
245
|
+
const url = req.nextUrl.clone();
|
|
246
|
+
const pathnameWithoutLocale =
|
|
247
|
+
url.pathname.replace(
|
|
248
|
+
urlLocaleMatcherRegex,
|
|
269
249
|
''
|
|
270
250
|
);
|
|
271
|
-
}
|
|
272
251
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
prettyUrl ?? pathnameWithoutLocale
|
|
278
|
-
}`.replace(/\/+/g, '/');
|
|
279
|
-
|
|
280
|
-
if (
|
|
281
|
-
Settings.usePrettyUrlRoute &&
|
|
282
|
-
url.searchParams.toString().length > 0 &&
|
|
283
|
-
!Object.entries(ROUTES).find(([, value]) =>
|
|
284
|
-
new RegExp(`^${value}/?$`).test(
|
|
285
|
-
pathnameWithoutLocale
|
|
286
|
-
)
|
|
287
|
-
)
|
|
288
|
-
) {
|
|
289
|
-
url.pathname =
|
|
290
|
-
url.pathname +
|
|
291
|
-
(/\/$/.test(url.pathname) ? '' : '/') +
|
|
292
|
-
`searchparams|${encodeURIComponent(
|
|
293
|
-
url.searchParams.toString()
|
|
294
|
-
)}`;
|
|
295
|
-
}
|
|
252
|
+
middlewareResult = (await middleware(
|
|
253
|
+
req,
|
|
254
|
+
event
|
|
255
|
+
)) as NextResponse | void;
|
|
296
256
|
|
|
297
|
-
|
|
298
|
-
!req.middlewareParams.found &&
|
|
299
|
-
Settings.customNotFoundEnabled
|
|
300
|
-
) {
|
|
301
|
-
const pathname = url.pathname
|
|
302
|
-
.replace(/\/+$/, '')
|
|
303
|
-
.split('/');
|
|
304
|
-
url.pathname = url.pathname.replace(
|
|
305
|
-
pathname.pop(),
|
|
306
|
-
'pz-not-found'
|
|
307
|
-
);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
Settings.rewrites.forEach((rewrite) => {
|
|
311
|
-
url.pathname = url.pathname.replace(
|
|
312
|
-
rewrite.source,
|
|
313
|
-
rewrite.destination
|
|
314
|
-
);
|
|
315
|
-
});
|
|
257
|
+
let customRewriteUrlDiff = '';
|
|
316
258
|
|
|
317
|
-
// if middleware.ts has a return value for current url
|
|
318
|
-
if (middlewareResult instanceof NextResponse) {
|
|
319
|
-
// pz-override-response header is used to prevent 404 page for custom responses.
|
|
320
259
|
if (
|
|
260
|
+
middlewareResult instanceof NextResponse &&
|
|
321
261
|
middlewareResult.headers.get(
|
|
322
262
|
'pz-override-response'
|
|
323
|
-
) !== 'true'
|
|
324
|
-
) {
|
|
325
|
-
middlewareResult.headers.set(
|
|
326
|
-
'x-middleware-rewrite',
|
|
327
|
-
url.href
|
|
328
|
-
);
|
|
329
|
-
} else if (
|
|
330
|
-
middlewareResult.headers.get(
|
|
331
|
-
'x-middleware-rewrite'
|
|
332
263
|
) &&
|
|
333
264
|
middlewareResult.headers.get(
|
|
334
|
-
'
|
|
335
|
-
)
|
|
265
|
+
'x-middleware-rewrite'
|
|
266
|
+
)
|
|
267
|
+
) {
|
|
268
|
+
const rewriteUrl = new URL(
|
|
269
|
+
middlewareResult.headers.get(
|
|
270
|
+
'x-middleware-rewrite'
|
|
271
|
+
)
|
|
272
|
+
);
|
|
273
|
+
const originalUrl = new URL(req.url);
|
|
274
|
+
customRewriteUrlDiff =
|
|
275
|
+
rewriteUrl.pathname.replace(
|
|
276
|
+
originalUrl.pathname,
|
|
277
|
+
''
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
url.basePath = `/${commerceUrl}`;
|
|
282
|
+
url.pathname = `/${
|
|
283
|
+
locale.length ? `${locale}/` : ''
|
|
284
|
+
}${currency}/${customRewriteUrlDiff}${
|
|
285
|
+
prettyUrl ?? pathnameWithoutLocale
|
|
286
|
+
}`.replace(/\/+/g, '/');
|
|
287
|
+
|
|
288
|
+
if (
|
|
289
|
+
Settings.usePrettyUrlRoute &&
|
|
290
|
+
url.searchParams.toString().length > 0 &&
|
|
291
|
+
!Object.entries(ROUTES).find(([, value]) =>
|
|
292
|
+
new RegExp(`^${value}/?$`).test(
|
|
293
|
+
pathnameWithoutLocale
|
|
294
|
+
)
|
|
295
|
+
)
|
|
336
296
|
) {
|
|
297
|
+
url.pathname =
|
|
298
|
+
url.pathname +
|
|
299
|
+
(/\/$/.test(url.pathname) ? '' : '/') +
|
|
300
|
+
`searchparams|${encodeURIComponent(
|
|
301
|
+
url.searchParams.toString()
|
|
302
|
+
)}`;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (
|
|
306
|
+
!req.middlewareParams.found &&
|
|
307
|
+
Settings.customNotFoundEnabled
|
|
308
|
+
) {
|
|
309
|
+
const pathname = url.pathname
|
|
310
|
+
.replace(/\/+$/, '')
|
|
311
|
+
.split('/');
|
|
312
|
+
url.pathname = url.pathname.replace(
|
|
313
|
+
pathname.pop(),
|
|
314
|
+
'pz-not-found'
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
Settings.rewrites.forEach((rewrite) => {
|
|
319
|
+
url.pathname = url.pathname.replace(
|
|
320
|
+
rewrite.source,
|
|
321
|
+
rewrite.destination
|
|
322
|
+
);
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
// if middleware.ts has a return value for current url
|
|
326
|
+
if (middlewareResult instanceof NextResponse) {
|
|
327
|
+
// pz-override-response header is used to prevent 404 page for custom responses.
|
|
328
|
+
if (
|
|
329
|
+
middlewareResult.headers.get(
|
|
330
|
+
'pz-override-response'
|
|
331
|
+
) !== 'true'
|
|
332
|
+
) {
|
|
333
|
+
middlewareResult.headers.set(
|
|
334
|
+
'x-middleware-rewrite',
|
|
335
|
+
url.href
|
|
336
|
+
);
|
|
337
|
+
} else if (
|
|
338
|
+
middlewareResult.headers.get(
|
|
339
|
+
'x-middleware-rewrite'
|
|
340
|
+
) &&
|
|
341
|
+
middlewareResult.headers.get(
|
|
342
|
+
'pz-override-response'
|
|
343
|
+
) === 'true'
|
|
344
|
+
) {
|
|
345
|
+
middlewareResult =
|
|
346
|
+
NextResponse.rewrite(url);
|
|
347
|
+
}
|
|
348
|
+
} else {
|
|
349
|
+
// if middleware.ts doesn't have a return value.
|
|
350
|
+
// e.g. NextResponse.next() doesn't exist in middleware.ts
|
|
351
|
+
|
|
337
352
|
middlewareResult = NextResponse.rewrite(url);
|
|
338
353
|
}
|
|
339
|
-
} else {
|
|
340
|
-
// if middleware.ts doesn't have a return value.
|
|
341
|
-
// e.g. NextResponse.next() doesn't exist in middleware.ts
|
|
342
354
|
|
|
343
|
-
|
|
344
|
-
|
|
355
|
+
const { localeUrlStrategy } =
|
|
356
|
+
Settings.localization;
|
|
357
|
+
|
|
358
|
+
const fallbackHost =
|
|
359
|
+
req.headers.get('x-forwarded-host') ||
|
|
360
|
+
req.headers.get('host');
|
|
361
|
+
const hostname =
|
|
362
|
+
process.env.NEXT_PUBLIC_URL ||
|
|
363
|
+
`https://${fallbackHost}`;
|
|
364
|
+
const rootHostname =
|
|
365
|
+
localeUrlStrategy ===
|
|
366
|
+
LocaleUrlStrategy.Subdomain
|
|
367
|
+
? getRootHostname(hostname)
|
|
368
|
+
: null;
|
|
369
|
+
|
|
370
|
+
if (
|
|
371
|
+
!url.pathname.startsWith(
|
|
372
|
+
`/${currency}/orders`
|
|
373
|
+
)
|
|
374
|
+
) {
|
|
375
|
+
middlewareResult.cookies.set(
|
|
376
|
+
'pz-locale',
|
|
377
|
+
locale?.length > 0
|
|
378
|
+
? locale
|
|
379
|
+
: defaultLocaleValue,
|
|
380
|
+
{
|
|
381
|
+
domain: rootHostname,
|
|
382
|
+
sameSite: 'none',
|
|
383
|
+
secure: true,
|
|
384
|
+
expires: new Date(
|
|
385
|
+
Date.now() + 1000 * 60 * 60 * 24 * 7
|
|
386
|
+
) // 7 days
|
|
387
|
+
}
|
|
388
|
+
);
|
|
389
|
+
}
|
|
345
390
|
|
|
346
|
-
const { localeUrlStrategy } =
|
|
347
|
-
Settings.localization;
|
|
348
|
-
|
|
349
|
-
const fallbackHost =
|
|
350
|
-
req.headers.get('x-forwarded-host') ||
|
|
351
|
-
req.headers.get('host');
|
|
352
|
-
const hostname =
|
|
353
|
-
process.env.NEXT_PUBLIC_URL ||
|
|
354
|
-
`https://${fallbackHost}`;
|
|
355
|
-
const rootHostname =
|
|
356
|
-
localeUrlStrategy ===
|
|
357
|
-
LocaleUrlStrategy.Subdomain
|
|
358
|
-
? getRootHostname(hostname)
|
|
359
|
-
: null;
|
|
360
|
-
|
|
361
|
-
if (
|
|
362
|
-
!url.pathname.startsWith(`/${currency}/orders`)
|
|
363
|
-
) {
|
|
364
391
|
middlewareResult.cookies.set(
|
|
365
|
-
'pz-
|
|
366
|
-
|
|
367
|
-
? locale
|
|
368
|
-
: defaultLocaleValue,
|
|
392
|
+
'pz-currency',
|
|
393
|
+
currency,
|
|
369
394
|
{
|
|
370
395
|
domain: rootHostname,
|
|
371
396
|
sameSite: 'none',
|
|
@@ -375,82 +400,69 @@ const withPzDefault =
|
|
|
375
400
|
) // 7 days
|
|
376
401
|
}
|
|
377
402
|
);
|
|
378
|
-
}
|
|
379
403
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
{
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
)
|
|
404
|
+
if (
|
|
405
|
+
req.cookies.get('pz-locale') &&
|
|
406
|
+
req.cookies.get('pz-locale').value !== locale
|
|
407
|
+
) {
|
|
408
|
+
logger.debug('Locale changed', {
|
|
409
|
+
locale,
|
|
410
|
+
oldLocale:
|
|
411
|
+
req.cookies.get('pz-locale')?.value,
|
|
412
|
+
ip
|
|
413
|
+
});
|
|
390
414
|
}
|
|
391
|
-
);
|
|
392
|
-
|
|
393
|
-
if (
|
|
394
|
-
req.cookies.get('pz-locale') &&
|
|
395
|
-
req.cookies.get('pz-locale').value !== locale
|
|
396
|
-
) {
|
|
397
|
-
logger.debug('Locale changed', {
|
|
398
|
-
locale,
|
|
399
|
-
oldLocale:
|
|
400
|
-
req.cookies.get('pz-locale')?.value,
|
|
401
|
-
ip
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
middlewareResult.headers.set(
|
|
406
|
-
'pz-url',
|
|
407
|
-
req.nextUrl.toString()
|
|
408
|
-
);
|
|
409
|
-
|
|
410
|
-
if (req.cookies.get('pz-set-currency')) {
|
|
411
|
-
middlewareResult.cookies.delete(
|
|
412
|
-
'pz-set-currency'
|
|
413
|
-
);
|
|
414
|
-
}
|
|
415
415
|
|
|
416
|
-
if (process.env.ACC_APP_VERSION) {
|
|
417
416
|
middlewareResult.headers.set(
|
|
418
|
-
'
|
|
419
|
-
|
|
417
|
+
'pz-url',
|
|
418
|
+
req.nextUrl.toString()
|
|
420
419
|
);
|
|
421
|
-
}
|
|
422
420
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
421
|
+
if (req.cookies.get('pz-set-currency')) {
|
|
422
|
+
middlewareResult.cookies.delete(
|
|
423
|
+
'pz-set-currency'
|
|
424
|
+
);
|
|
425
|
+
}
|
|
426
426
|
|
|
427
|
-
if (
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
middlewareResult.cookies.set(
|
|
432
|
-
'csrftoken',
|
|
433
|
-
csrf_token,
|
|
434
|
-
{
|
|
435
|
-
domain: rootHostname
|
|
436
|
-
}
|
|
427
|
+
if (process.env.ACC_APP_VERSION) {
|
|
428
|
+
middlewareResult.headers.set(
|
|
429
|
+
'acc-app-version',
|
|
430
|
+
process.env.ACC_APP_VERSION
|
|
437
431
|
);
|
|
438
432
|
}
|
|
433
|
+
|
|
434
|
+
// Set CSRF token if not set
|
|
435
|
+
try {
|
|
436
|
+
const url = `${Settings.commerceUrl}${user.csrfToken}`;
|
|
437
|
+
|
|
438
|
+
if (!req.cookies.get('csrftoken')) {
|
|
439
|
+
const { csrf_token } = await (
|
|
440
|
+
await fetch(url)
|
|
441
|
+
).json();
|
|
442
|
+
middlewareResult.cookies.set(
|
|
443
|
+
'csrftoken',
|
|
444
|
+
csrf_token,
|
|
445
|
+
{
|
|
446
|
+
domain: rootHostname
|
|
447
|
+
}
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
} catch (error) {
|
|
451
|
+
logger.error('CSRF Error', {
|
|
452
|
+
error,
|
|
453
|
+
ip
|
|
454
|
+
});
|
|
455
|
+
}
|
|
439
456
|
} catch (error) {
|
|
440
|
-
logger.error('
|
|
457
|
+
logger.error('withPzDefault Error', {
|
|
441
458
|
error,
|
|
442
459
|
ip
|
|
443
460
|
});
|
|
444
461
|
}
|
|
445
|
-
} catch (error) {
|
|
446
|
-
logger.error('withPzDefault Error', {
|
|
447
|
-
error,
|
|
448
|
-
ip
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
462
|
|
|
452
|
-
|
|
453
|
-
|
|
463
|
+
return middlewareResult;
|
|
464
|
+
}
|
|
465
|
+
)
|
|
454
466
|
)
|
|
455
467
|
)
|
|
456
468
|
)
|
package/middlewares/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ import withCompleteGpay from './complete-gpay';
|
|
|
9
9
|
import withCompleteMasterpass from './complete-masterpass';
|
|
10
10
|
import withCheckoutProvider from './checkout-provider';
|
|
11
11
|
import withSavedCardRedirection from './saved-card-redirection';
|
|
12
|
+
import withWalletCompleteRedirection from './wallet-complete-redirection';
|
|
12
13
|
import { NextRequest } from 'next/server';
|
|
13
14
|
|
|
14
15
|
export {
|
|
@@ -22,7 +23,8 @@ export {
|
|
|
22
23
|
withCompleteGpay,
|
|
23
24
|
withCompleteMasterpass,
|
|
24
25
|
withCheckoutProvider,
|
|
25
|
-
withSavedCardRedirection
|
|
26
|
+
withSavedCardRedirection,
|
|
27
|
+
withWalletCompleteRedirection
|
|
26
28
|
};
|
|
27
29
|
|
|
28
30
|
export interface PzNextRequest extends NextRequest {
|
package/middlewares/locale.ts
CHANGED
|
@@ -23,7 +23,15 @@ const getMatchedLocale = (pathname: string, req: PzNextRequest) => {
|
|
|
23
23
|
);
|
|
24
24
|
|
|
25
25
|
if (subDomainLocaleMatched && subDomainLocaleMatched[0]) {
|
|
26
|
-
|
|
26
|
+
const subdomainLocale = subDomainLocaleMatched[0].slice(1);
|
|
27
|
+
|
|
28
|
+
const isValidSubdomainLocale = settings.localization.locales.find(
|
|
29
|
+
(l) => l.value === subdomainLocale
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
if (isValidSubdomainLocale) {
|
|
33
|
+
matchedLocale = subdomainLocale;
|
|
34
|
+
}
|
|
27
35
|
}
|
|
28
36
|
}
|
|
29
37
|
}
|
|
@@ -146,7 +146,8 @@ const withRedirectionPayment =
|
|
|
146
146
|
logger.info('Redirecting to order success page', {
|
|
147
147
|
middleware: 'redirection-payment',
|
|
148
148
|
redirectUrlWithLocale,
|
|
149
|
-
ip
|
|
149
|
+
ip,
|
|
150
|
+
setCookie: request.headers.get('set-cookie')
|
|
150
151
|
});
|
|
151
152
|
|
|
152
153
|
// Using POST method while redirecting causes an error,
|
|
@@ -145,7 +145,8 @@ const withSavedCardRedirection =
|
|
|
145
145
|
logger.info('Redirecting to order success page', {
|
|
146
146
|
middleware: 'saved-card-redirection',
|
|
147
147
|
redirectUrlWithLocale,
|
|
148
|
-
ip
|
|
148
|
+
ip,
|
|
149
|
+
setCookie: request.headers.get('set-cookie')
|
|
149
150
|
});
|
|
150
151
|
|
|
151
152
|
// Using POST method while redirecting causes an error,
|
|
@@ -145,7 +145,8 @@ const withThreeDRedirection =
|
|
|
145
145
|
logger.info('Redirecting to order success page', {
|
|
146
146
|
middleware: 'three-d-redirection',
|
|
147
147
|
redirectUrlWithLocale,
|
|
148
|
-
ip
|
|
148
|
+
ip,
|
|
149
|
+
setCookie: request.headers.get('set-cookie')
|
|
149
150
|
});
|
|
150
151
|
|
|
151
152
|
// Using POST method while redirecting causes an error,
|
|
@@ -4,6 +4,7 @@ import { PzNextRequest } from '.';
|
|
|
4
4
|
import logger from '../utils/log';
|
|
5
5
|
import { urlLocaleMatcherRegex } from '../utils';
|
|
6
6
|
import { getUrlPathWithLocale } from '../utils/localization';
|
|
7
|
+
import { shouldIgnoreRedirect } from '../utils/redirect-ignore';
|
|
7
8
|
import { ROUTES } from 'routes';
|
|
8
9
|
|
|
9
10
|
// This middleware is used to handle url redirections set in Omnitron
|
|
@@ -50,7 +51,7 @@ const withUrlRedirection =
|
|
|
50
51
|
const location = request.headers.get('location');
|
|
51
52
|
const redirectUrl = new URL(
|
|
52
53
|
request.headers.get('location'),
|
|
53
|
-
location.startsWith('http') ? '' :
|
|
54
|
+
location.startsWith('http') ? '' : url.origin
|
|
54
55
|
);
|
|
55
56
|
|
|
56
57
|
redirectUrl.pathname = getUrlPathWithLocale(
|
|
@@ -60,20 +61,13 @@ const withUrlRedirection =
|
|
|
60
61
|
|
|
61
62
|
const setCookies = request.headers.getSetCookie();
|
|
62
63
|
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
)
|
|
71
|
-
)
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
if (shouldIgnoreRedirect) {
|
|
75
|
-
return middleware(req, event);
|
|
76
|
-
}
|
|
64
|
+
if (
|
|
65
|
+
shouldIgnoreRedirect(
|
|
66
|
+
url.pathname,
|
|
67
|
+
req.middlewareParams.rewrites.locale
|
|
68
|
+
)
|
|
69
|
+
) {
|
|
70
|
+
return middleware(req, event);
|
|
77
71
|
}
|
|
78
72
|
|
|
79
73
|
const response = NextResponse.redirect(redirectUrl.toString(), {
|