From 2962ed975840144ae1838f58b2a8c4cd6649f664 Mon Sep 17 00:00:00 2001 From: Charles Garrett Date: Mon, 26 Feb 2024 13:56:46 -0500 Subject: [PATCH] chore: testing geo boundary config --- src/middleware.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/middleware.ts diff --git a/src/middleware.ts b/src/middleware.ts new file mode 100644 index 0000000000..4c70940ac7 --- /dev/null +++ b/src/middleware.ts @@ -0,0 +1,36 @@ +import type { NextRequest } from 'next/server'; +import { NextResponse } from 'next/server'; + +//https://www.iban.com/country-codes + +//todo remove spain after testing on preview +const IBAN_BLOCKED_REGIONS = ['CU', 'IR', 'KP', 'SY', 'ES']; + +// Limit middleware pathname config +export const config = { + matcher: [ + '/:path/widget/:slug', + '/:path/component/:slug', + '/files/:path*', + '/papers/:path*', + '/blog/:path*', + '/signup:path*', + '/signin/:path*', + ], +}; + +export function middleware(req: NextRequest) { + // Extract country + const country = (req.geo && req.geo.country) || 'UNKNOWN'; + + //TODO remove after testing on preview + console.log('users country is ', country); + + let nextUrl = NextResponse.rewrite(req.nextUrl); + // Specify the correct pathname + if (IBAN_BLOCKED_REGIONS.includes(country)) { + nextUrl = NextResponse.rewrite('/geo-blocked'); + } + + return nextUrl; +}