-
Notifications
You must be signed in to change notification settings - Fork 0
/
middleware.ts
45 lines (38 loc) · 1.52 KB
/
middleware.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//
// Mécanisme de gestion des langues et traductions.
// Source : https://next-intl-docs.vercel.app/docs/routing/middleware
//
import { type NextRequest } from "next/server";
import createIntlMiddleware from "next-intl/middleware";
import "./utilities/env";
import { getLanguages } from "./utilities/i18n";
import { checkRecaptcha } from "./utilities/recaptcha";
export default async function middleware( request: NextRequest )
{
// On traite d'abord les requêtes de vérification contenant un jeton reCAPTCHA.
const isRecaptchaRoute = request.nextUrl.pathname === "/api/recaptcha";
const isRecaptchaEnabled = process.env.NEXT_PUBLIC_RECAPTCHA_ENABLED === "true";
const isValidRecaptchaRequest = isRecaptchaEnabled && isRecaptchaRoute;
if ( isValidRecaptchaRequest )
{
return checkRecaptcha( request );
}
// On créé enfin le mécanisme de gestion des langues et traductions.
// Source : https://next-intl-docs.vercel.app/docs/getting-started/app-router-server-components
const i18nRouting = createIntlMiddleware( {
locales: getLanguages(),
localePrefix: "never",
defaultLocale: "en"
} );
return i18nRouting( request );
}
export const config = {
matcher: [ "/", "/((?!_next|_vercel|.*\\..*).*)" ]
};
if ( process.env.__NEXT_ROUTER_BASEPATH )
{
// Ajout du support du chemin de base de NextJS pour le routage
// effectué par le mécanisme de gestion des langues et traductions.
// Source : https://next-intl-docs.vercel.app/docs/routing/middleware#base-path
config.matcher.push( process.env.__NEXT_ROUTER_BASEPATH );
}