@akinon/next 1.93.0-rc.49 → 1.93.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/CHANGELOG.md +36 -1260
- package/__tests__/next-config.test.ts +10 -1
- package/bin/pz-prebuild.js +1 -0
- package/components/accordion.tsx +5 -20
- package/components/file-input.tsx +3 -65
- package/components/input.tsx +0 -2
- package/components/link.tsx +12 -16
- package/components/modal.tsx +16 -32
- package/components/plugin-module.tsx +3 -35
- package/components/selected-payment-option-view.tsx +0 -11
- package/data/client/checkout.ts +4 -25
- package/data/server/category.ts +28 -48
- package/data/server/flatpage.ts +12 -16
- package/data/server/landingpage.ts +12 -16
- package/data/server/list.ts +13 -23
- package/data/server/product.ts +39 -66
- package/data/server/special-page.ts +12 -16
- package/data/urls.ts +2 -7
- package/hocs/server/with-segment-defaults.tsx +2 -5
- package/hooks/use-localization.ts +3 -2
- package/instrumentation/node.ts +13 -15
- package/jest.config.js +1 -7
- package/lib/cache.ts +0 -2
- package/middlewares/checkout-provider.ts +1 -1
- package/middlewares/complete-gpay.ts +2 -6
- package/middlewares/complete-masterpass.ts +2 -7
- package/middlewares/default.ts +183 -232
- package/middlewares/index.ts +1 -3
- package/middlewares/locale.ts +1 -9
- package/middlewares/redirection-payment.ts +2 -6
- package/middlewares/saved-card-redirection.ts +2 -7
- package/middlewares/three-d-redirection.ts +2 -7
- package/middlewares/url-redirection.ts +15 -9
- package/package.json +3 -3
- package/plugins.d.ts +0 -10
- package/plugins.js +1 -4
- package/redux/middlewares/checkout.ts +2 -15
- package/redux/reducers/checkout.ts +1 -9
- package/sentry/index.ts +17 -54
- package/types/commerce/order.ts +0 -1
- package/types/index.ts +1 -42
- package/utils/app-fetch.ts +2 -7
- package/utils/index.ts +10 -34
- package/utils/redirect.ts +6 -31
- package/with-pz-config.js +5 -1
- package/__tests__/redirect.test.ts +0 -758
- package/api/image-proxy.ts +0 -75
- package/api/similar-product-list.ts +0 -84
- package/api/similar-products.ts +0 -120
- package/data/server/basket.ts +0 -72
- package/hooks/use-loyalty-availability.ts +0 -21
- package/middlewares/wallet-complete-redirection.ts +0 -203
- package/utils/redirect-ignore.ts +0 -35
package/middlewares/default.ts
CHANGED
|
@@ -11,8 +11,7 @@ import {
|
|
|
11
11
|
withRedirectionPayment,
|
|
12
12
|
withSavedCardRedirection,
|
|
13
13
|
withThreeDRedirection,
|
|
14
|
-
withUrlRedirection
|
|
15
|
-
withWalletCompleteRedirection
|
|
14
|
+
withUrlRedirection
|
|
16
15
|
} from '.';
|
|
17
16
|
import { urlLocaleMatcherRegex } from '../utils';
|
|
18
17
|
import withCurrency from './currency';
|
|
@@ -229,173 +228,144 @@ const withPzDefault =
|
|
|
229
228
|
withCompleteGpay(
|
|
230
229
|
withCompleteMasterpass(
|
|
231
230
|
withSavedCardRedirection(
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
231
|
+
async (req: PzNextRequest, event: NextFetchEvent) => {
|
|
232
|
+
let middlewareResult: NextResponse | void =
|
|
233
|
+
NextResponse.next();
|
|
234
|
+
|
|
235
|
+
try {
|
|
236
|
+
const { locale, prettyUrl, currency } =
|
|
237
|
+
req.middlewareParams.rewrites;
|
|
238
|
+
const { defaultLocaleValue } =
|
|
239
|
+
Settings.localization;
|
|
240
|
+
const url = req.nextUrl.clone();
|
|
241
|
+
const pathnameWithoutLocale =
|
|
242
|
+
url.pathname.replace(urlLocaleMatcherRegex, '');
|
|
243
|
+
|
|
244
|
+
middlewareResult = (await middleware(
|
|
245
|
+
req,
|
|
246
|
+
event
|
|
247
|
+
)) as NextResponse | void;
|
|
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,
|
|
249
269
|
''
|
|
250
270
|
);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
url.basePath = `/${commerceUrl}`;
|
|
274
|
+
url.pathname = `/${
|
|
275
|
+
locale.length ? `${locale}/` : ''
|
|
276
|
+
}${currency}/${customRewriteUrlDiff}${
|
|
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
|
+
}
|
|
251
296
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
297
|
+
if (
|
|
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
|
+
}
|
|
256
309
|
|
|
257
|
-
|
|
310
|
+
Settings.rewrites.forEach((rewrite) => {
|
|
311
|
+
url.pathname = url.pathname.replace(
|
|
312
|
+
rewrite.source,
|
|
313
|
+
rewrite.destination
|
|
314
|
+
);
|
|
315
|
+
});
|
|
258
316
|
|
|
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.
|
|
259
320
|
if (
|
|
260
|
-
middlewareResult instanceof NextResponse &&
|
|
261
321
|
middlewareResult.headers.get(
|
|
262
322
|
'pz-override-response'
|
|
263
|
-
)
|
|
264
|
-
middlewareResult.headers.get(
|
|
265
|
-
'x-middleware-rewrite'
|
|
266
|
-
)
|
|
323
|
+
) !== 'true'
|
|
267
324
|
) {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
)
|
|
325
|
+
middlewareResult.headers.set(
|
|
326
|
+
'x-middleware-rewrite',
|
|
327
|
+
url.href
|
|
272
328
|
);
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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
|
-
)
|
|
329
|
+
} else if (
|
|
330
|
+
middlewareResult.headers.get(
|
|
331
|
+
'x-middleware-rewrite'
|
|
332
|
+
) &&
|
|
333
|
+
middlewareResult.headers.get(
|
|
334
|
+
'pz-override-response'
|
|
335
|
+
) === 'true'
|
|
296
336
|
) {
|
|
297
|
-
url.pathname =
|
|
298
|
-
url.pathname +
|
|
299
|
-
(/\/$/.test(url.pathname) ? '' : '/') +
|
|
300
|
-
`searchparams|${encodeURIComponent(
|
|
301
|
-
url.searchParams.toString()
|
|
302
|
-
)}`;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
Settings.rewrites.forEach((rewrite) => {
|
|
306
|
-
url.pathname = url.pathname.replace(
|
|
307
|
-
rewrite.source,
|
|
308
|
-
rewrite.destination
|
|
309
|
-
);
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
// if middleware.ts has a return value for current url
|
|
313
|
-
if (middlewareResult instanceof NextResponse) {
|
|
314
|
-
// pz-override-response header is used to prevent 404 page for custom responses.
|
|
315
|
-
if (
|
|
316
|
-
middlewareResult.headers.get(
|
|
317
|
-
'pz-override-response'
|
|
318
|
-
) !== 'true'
|
|
319
|
-
) {
|
|
320
|
-
middlewareResult.headers.set(
|
|
321
|
-
'x-middleware-rewrite',
|
|
322
|
-
url.href
|
|
323
|
-
);
|
|
324
|
-
} else if (
|
|
325
|
-
middlewareResult.headers.get(
|
|
326
|
-
'x-middleware-rewrite'
|
|
327
|
-
) &&
|
|
328
|
-
middlewareResult.headers.get(
|
|
329
|
-
'pz-override-response'
|
|
330
|
-
) === 'true'
|
|
331
|
-
) {
|
|
332
|
-
middlewareResult =
|
|
333
|
-
NextResponse.rewrite(url);
|
|
334
|
-
}
|
|
335
|
-
} else {
|
|
336
|
-
// if middleware.ts doesn't have a return value.
|
|
337
|
-
// e.g. NextResponse.next() doesn't exist in middleware.ts
|
|
338
|
-
|
|
339
337
|
middlewareResult = NextResponse.rewrite(url);
|
|
340
338
|
}
|
|
339
|
+
} else {
|
|
340
|
+
// if middleware.ts doesn't have a return value.
|
|
341
|
+
// e.g. NextResponse.next() doesn't exist in middleware.ts
|
|
341
342
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
Settings.customNotFoundEnabled
|
|
345
|
-
) {
|
|
346
|
-
const pathSegments = url.pathname
|
|
347
|
-
.replace(/\/+$/, '')
|
|
348
|
-
.split('/');
|
|
349
|
-
if (pathSegments.length >= 3) {
|
|
350
|
-
url.pathname = `/${pathSegments[1]}/${pathSegments[2]}/pz-not-found`;
|
|
351
|
-
} else {
|
|
352
|
-
url.pathname = '/pz-not-found';
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
middlewareResult = NextResponse.rewrite(url, {
|
|
356
|
-
status: 404
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
const { localeUrlStrategy } =
|
|
361
|
-
Settings.localization;
|
|
362
|
-
|
|
363
|
-
const fallbackHost =
|
|
364
|
-
req.headers.get('x-forwarded-host') ||
|
|
365
|
-
req.headers.get('host');
|
|
366
|
-
const hostname =
|
|
367
|
-
process.env.NEXT_PUBLIC_URL ||
|
|
368
|
-
`https://${fallbackHost}`;
|
|
369
|
-
const rootHostname =
|
|
370
|
-
localeUrlStrategy ===
|
|
371
|
-
LocaleUrlStrategy.Subdomain
|
|
372
|
-
? getRootHostname(hostname)
|
|
373
|
-
: null;
|
|
374
|
-
|
|
375
|
-
if (
|
|
376
|
-
!url.pathname.startsWith(
|
|
377
|
-
`/${currency}/orders`
|
|
378
|
-
)
|
|
379
|
-
) {
|
|
380
|
-
middlewareResult.cookies.set(
|
|
381
|
-
'pz-locale',
|
|
382
|
-
locale?.length > 0
|
|
383
|
-
? locale
|
|
384
|
-
: defaultLocaleValue,
|
|
385
|
-
{
|
|
386
|
-
domain: rootHostname,
|
|
387
|
-
sameSite: 'none',
|
|
388
|
-
secure: true,
|
|
389
|
-
expires: new Date(
|
|
390
|
-
Date.now() + 1000 * 60 * 60 * 24 * 7
|
|
391
|
-
) // 7 days
|
|
392
|
-
}
|
|
393
|
-
);
|
|
394
|
-
}
|
|
343
|
+
middlewareResult = NextResponse.rewrite(url);
|
|
344
|
+
}
|
|
395
345
|
|
|
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
|
+
) {
|
|
396
364
|
middlewareResult.cookies.set(
|
|
397
|
-
'pz-
|
|
398
|
-
|
|
365
|
+
'pz-locale',
|
|
366
|
+
locale?.length > 0
|
|
367
|
+
? locale
|
|
368
|
+
: defaultLocaleValue,
|
|
399
369
|
{
|
|
400
370
|
domain: rootHostname,
|
|
401
371
|
sameSite: 'none',
|
|
@@ -405,101 +375,82 @@ const withPzDefault =
|
|
|
405
375
|
) // 7 days
|
|
406
376
|
}
|
|
407
377
|
);
|
|
378
|
+
}
|
|
408
379
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
const shouldUpdateCookie =
|
|
420
|
-
!currentCookieLocale ||
|
|
421
|
-
urlHasExplicitLocale;
|
|
422
|
-
|
|
423
|
-
if (shouldUpdateCookie) {
|
|
424
|
-
middlewareResult.cookies.set(
|
|
425
|
-
'pz-locale',
|
|
426
|
-
locale?.length > 0
|
|
427
|
-
? locale
|
|
428
|
-
: defaultLocaleValue,
|
|
429
|
-
{
|
|
430
|
-
domain: rootHostname,
|
|
431
|
-
sameSite: 'none',
|
|
432
|
-
secure: true,
|
|
433
|
-
expires: new Date(
|
|
434
|
-
Date.now() + 1000 * 60 * 60 * 24 * 7
|
|
435
|
-
) // 7 days
|
|
436
|
-
}
|
|
437
|
-
);
|
|
438
|
-
}
|
|
380
|
+
middlewareResult.cookies.set(
|
|
381
|
+
'pz-currency',
|
|
382
|
+
currency,
|
|
383
|
+
{
|
|
384
|
+
domain: rootHostname,
|
|
385
|
+
sameSite: 'none',
|
|
386
|
+
secure: true,
|
|
387
|
+
expires: new Date(
|
|
388
|
+
Date.now() + 1000 * 60 * 60 * 24 * 7
|
|
389
|
+
) // 7 days
|
|
439
390
|
}
|
|
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
|
+
}
|
|
440
404
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
}
|
|
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
|
+
}
|
|
452
415
|
|
|
416
|
+
if (process.env.ACC_APP_VERSION) {
|
|
453
417
|
middlewareResult.headers.set(
|
|
454
|
-
'
|
|
455
|
-
|
|
418
|
+
'acc-app-version',
|
|
419
|
+
process.env.ACC_APP_VERSION
|
|
456
420
|
);
|
|
421
|
+
}
|
|
457
422
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
);
|
|
462
|
-
}
|
|
423
|
+
// Set CSRF token if not set
|
|
424
|
+
try {
|
|
425
|
+
const url = `${Settings.commerceUrl}${user.csrfToken}`;
|
|
463
426
|
|
|
464
|
-
if (
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
427
|
+
if (!req.cookies.get('csrftoken')) {
|
|
428
|
+
const { csrf_token } = await (
|
|
429
|
+
await fetch(url)
|
|
430
|
+
).json();
|
|
431
|
+
middlewareResult.cookies.set(
|
|
432
|
+
'csrftoken',
|
|
433
|
+
csrf_token,
|
|
434
|
+
{
|
|
435
|
+
domain: rootHostname
|
|
436
|
+
}
|
|
468
437
|
);
|
|
469
438
|
}
|
|
470
|
-
|
|
471
|
-
// Set CSRF token if not set
|
|
472
|
-
try {
|
|
473
|
-
const url = `${Settings.commerceUrl}${user.csrfToken}`;
|
|
474
|
-
|
|
475
|
-
if (!req.cookies.get('csrftoken')) {
|
|
476
|
-
const { csrf_token } = await (
|
|
477
|
-
await fetch(url)
|
|
478
|
-
).json();
|
|
479
|
-
middlewareResult.cookies.set(
|
|
480
|
-
'csrftoken',
|
|
481
|
-
csrf_token,
|
|
482
|
-
{
|
|
483
|
-
domain: rootHostname
|
|
484
|
-
}
|
|
485
|
-
);
|
|
486
|
-
}
|
|
487
|
-
} catch (error) {
|
|
488
|
-
logger.error('CSRF Error', {
|
|
489
|
-
error,
|
|
490
|
-
ip
|
|
491
|
-
});
|
|
492
|
-
}
|
|
493
439
|
} catch (error) {
|
|
494
|
-
logger.error('
|
|
440
|
+
logger.error('CSRF Error', {
|
|
495
441
|
error,
|
|
496
442
|
ip
|
|
497
443
|
});
|
|
498
444
|
}
|
|
499
|
-
|
|
500
|
-
|
|
445
|
+
} catch (error) {
|
|
446
|
+
logger.error('withPzDefault Error', {
|
|
447
|
+
error,
|
|
448
|
+
ip
|
|
449
|
+
});
|
|
501
450
|
}
|
|
502
|
-
|
|
451
|
+
|
|
452
|
+
return middlewareResult;
|
|
453
|
+
}
|
|
503
454
|
)
|
|
504
455
|
)
|
|
505
456
|
)
|
package/middlewares/index.ts
CHANGED
|
@@ -9,7 +9,6 @@ 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';
|
|
13
12
|
import { NextRequest } from 'next/server';
|
|
14
13
|
|
|
15
14
|
export {
|
|
@@ -23,8 +22,7 @@ export {
|
|
|
23
22
|
withCompleteGpay,
|
|
24
23
|
withCompleteMasterpass,
|
|
25
24
|
withCheckoutProvider,
|
|
26
|
-
withSavedCardRedirection
|
|
27
|
-
withWalletCompleteRedirection
|
|
25
|
+
withSavedCardRedirection
|
|
28
26
|
};
|
|
29
27
|
|
|
30
28
|
export interface PzNextRequest extends NextRequest {
|
package/middlewares/locale.ts
CHANGED
|
@@ -23,15 +23,7 @@ const getMatchedLocale = (pathname: string, req: PzNextRequest) => {
|
|
|
23
23
|
);
|
|
24
24
|
|
|
25
25
|
if (subDomainLocaleMatched && subDomainLocaleMatched[0]) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const isValidSubdomainLocale = settings.localization.locales.find(
|
|
29
|
-
(l) => l.value === subdomainLocale
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
if (isValidSubdomainLocale) {
|
|
33
|
-
matchedLocale = subdomainLocale;
|
|
34
|
-
}
|
|
26
|
+
matchedLocale = subDomainLocaleMatched[0].slice(1);
|
|
35
27
|
}
|
|
36
28
|
}
|
|
37
29
|
}
|
|
@@ -35,7 +35,6 @@ const withRedirectionPayment =
|
|
|
35
35
|
const searchParams = new URLSearchParams(url.search);
|
|
36
36
|
const ip = req.headers.get('x-forwarded-for') ?? '';
|
|
37
37
|
const sessionId = req.cookies.get('osessionid');
|
|
38
|
-
const currentLocale = req.middlewareParams?.rewrites?.locale;
|
|
39
38
|
|
|
40
39
|
if (searchParams.get('page') !== 'RedirectionPageCompletePage') {
|
|
41
40
|
return middleware(req, event);
|
|
@@ -47,9 +46,7 @@ const withRedirectionPayment =
|
|
|
47
46
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
48
47
|
Cookie: req.headers.get('cookie') ?? '',
|
|
49
48
|
'x-currency': req.cookies.get('pz-currency')?.value ?? '',
|
|
50
|
-
'x-forwarded-for': ip
|
|
51
|
-
'Accept-Language':
|
|
52
|
-
currentLocale ?? req.cookies.get('pz-locale')?.value ?? ''
|
|
49
|
+
'x-forwarded-for': ip
|
|
53
50
|
};
|
|
54
51
|
|
|
55
52
|
try {
|
|
@@ -149,8 +146,7 @@ const withRedirectionPayment =
|
|
|
149
146
|
logger.info('Redirecting to order success page', {
|
|
150
147
|
middleware: 'redirection-payment',
|
|
151
148
|
redirectUrlWithLocale,
|
|
152
|
-
ip
|
|
153
|
-
setCookie: request.headers.get('set-cookie')
|
|
149
|
+
ip
|
|
154
150
|
});
|
|
155
151
|
|
|
156
152
|
// Using POST method while redirecting causes an error,
|
|
@@ -4,7 +4,6 @@ import { Buffer } from 'buffer';
|
|
|
4
4
|
import logger from '../utils/log';
|
|
5
5
|
import { getUrlPathWithLocale } from '../utils/localization';
|
|
6
6
|
import { PzNextRequest } from '.';
|
|
7
|
-
import { ServerVariables } from '../utils/server-variables';
|
|
8
7
|
|
|
9
8
|
const streamToString = async (stream: ReadableStream<Uint8Array> | null) => {
|
|
10
9
|
if (stream) {
|
|
@@ -35,7 +34,6 @@ const withSavedCardRedirection =
|
|
|
35
34
|
const url = req.nextUrl.clone();
|
|
36
35
|
const ip = req.headers.get('x-forwarded-for') ?? '';
|
|
37
36
|
const sessionId = req.cookies.get('osessionid');
|
|
38
|
-
const currentLocale = req.middlewareParams?.rewrites?.locale;
|
|
39
37
|
|
|
40
38
|
if (url.search.indexOf('SavedCardThreeDSecurePage') === -1) {
|
|
41
39
|
return middleware(req, event);
|
|
@@ -47,9 +45,7 @@ const withSavedCardRedirection =
|
|
|
47
45
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
48
46
|
Cookie: req.headers.get('cookie') ?? '',
|
|
49
47
|
'x-currency': req.cookies.get('pz-currency')?.value ?? '',
|
|
50
|
-
'x-forwarded-for': ip
|
|
51
|
-
'Accept-Language':
|
|
52
|
-
currentLocale ?? req.cookies.get('pz-locale')?.value ?? ''
|
|
48
|
+
'x-forwarded-for': ip
|
|
53
49
|
};
|
|
54
50
|
|
|
55
51
|
try {
|
|
@@ -149,8 +145,7 @@ const withSavedCardRedirection =
|
|
|
149
145
|
logger.info('Redirecting to order success page', {
|
|
150
146
|
middleware: 'saved-card-redirection',
|
|
151
147
|
redirectUrlWithLocale,
|
|
152
|
-
ip
|
|
153
|
-
setCookie: request.headers.get('set-cookie')
|
|
148
|
+
ip
|
|
154
149
|
});
|
|
155
150
|
|
|
156
151
|
// Using POST method while redirecting causes an error,
|
|
@@ -4,7 +4,6 @@ import { Buffer } from 'buffer';
|
|
|
4
4
|
import logger from '../utils/log';
|
|
5
5
|
import { getUrlPathWithLocale } from '../utils/localization';
|
|
6
6
|
import { PzNextRequest } from '.';
|
|
7
|
-
import { ServerVariables } from '../utils/server-variables';
|
|
8
7
|
|
|
9
8
|
const streamToString = async (stream: ReadableStream<Uint8Array> | null) => {
|
|
10
9
|
if (stream) {
|
|
@@ -35,7 +34,6 @@ const withThreeDRedirection =
|
|
|
35
34
|
const url = req.nextUrl.clone();
|
|
36
35
|
const ip = req.headers.get('x-forwarded-for') ?? '';
|
|
37
36
|
const sessionId = req.cookies.get('osessionid');
|
|
38
|
-
const currentLocale = req.middlewareParams?.rewrites?.locale;
|
|
39
37
|
|
|
40
38
|
if (url.search.indexOf('CreditCardThreeDSecurePage') === -1) {
|
|
41
39
|
return middleware(req, event);
|
|
@@ -47,9 +45,7 @@ const withThreeDRedirection =
|
|
|
47
45
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
48
46
|
Cookie: req.headers.get('cookie') ?? '',
|
|
49
47
|
'x-currency': req.cookies.get('pz-currency')?.value ?? '',
|
|
50
|
-
'x-forwarded-for': ip
|
|
51
|
-
'Accept-Language':
|
|
52
|
-
currentLocale ?? req.cookies.get('pz-locale')?.value ?? ''
|
|
48
|
+
'x-forwarded-for': ip
|
|
53
49
|
};
|
|
54
50
|
|
|
55
51
|
try {
|
|
@@ -149,8 +145,7 @@ const withThreeDRedirection =
|
|
|
149
145
|
logger.info('Redirecting to order success page', {
|
|
150
146
|
middleware: 'three-d-redirection',
|
|
151
147
|
redirectUrlWithLocale,
|
|
152
|
-
ip
|
|
153
|
-
setCookie: request.headers.get('set-cookie')
|
|
148
|
+
ip
|
|
154
149
|
});
|
|
155
150
|
|
|
156
151
|
// Using POST method while redirecting causes an error,
|
|
@@ -4,7 +4,6 @@ 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';
|
|
8
7
|
import { ROUTES } from 'routes';
|
|
9
8
|
|
|
10
9
|
// This middleware is used to handle url redirections set in Omnitron
|
|
@@ -51,7 +50,7 @@ const withUrlRedirection =
|
|
|
51
50
|
const location = request.headers.get('location');
|
|
52
51
|
const redirectUrl = new URL(
|
|
53
52
|
request.headers.get('location'),
|
|
54
|
-
location.startsWith('http') ? '' :
|
|
53
|
+
location.startsWith('http') ? '' : process.env.NEXT_PUBLIC_URL
|
|
55
54
|
);
|
|
56
55
|
|
|
57
56
|
redirectUrl.pathname = getUrlPathWithLocale(
|
|
@@ -61,13 +60,20 @@ const withUrlRedirection =
|
|
|
61
60
|
|
|
62
61
|
const setCookies = request.headers.getSetCookie();
|
|
63
62
|
|
|
64
|
-
if (
|
|
65
|
-
shouldIgnoreRedirect
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
63
|
+
if (settings.commerceRedirectionIgnoreList) {
|
|
64
|
+
const shouldIgnoreRedirect =
|
|
65
|
+
settings.commerceRedirectionIgnoreList.some((ignorePath) =>
|
|
66
|
+
redirectUrl.pathname.startsWith(
|
|
67
|
+
getUrlPathWithLocale(
|
|
68
|
+
ignorePath,
|
|
69
|
+
req.middlewareParams.rewrites.locale
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
if (shouldIgnoreRedirect) {
|
|
75
|
+
return middleware(req, event);
|
|
76
|
+
}
|
|
71
77
|
}
|
|
72
78
|
|
|
73
79
|
const response = NextResponse.redirect(redirectUrl.toString(), {
|