Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 

31 rinda
1.0 KiB

  1. import { NextRequestWithAuth, withAuth } from "next-auth/middleware";
  2. import { authOptions } from "@/config/authConfig";
  3. import { NextFetchEvent, NextResponse } from "next/server";
  4. const PUBLIC_ROUTES = ["/login", "/logout"];
  5. const LANG_QUERY_PARAM = "lang";
  6. const authMiddleware = withAuth({
  7. pages: authOptions.pages,
  8. });
  9. export default async function middleware(
  10. req: NextRequestWithAuth,
  11. event: NextFetchEvent,
  12. ) {
  13. const langPref = req.nextUrl.searchParams.get(LANG_QUERY_PARAM);
  14. if (langPref) {
  15. // Redirect to same url without the lang query param + set cookies
  16. const newUrl = new URL(req.nextUrl);
  17. newUrl.searchParams.delete(LANG_QUERY_PARAM);
  18. const response = NextResponse.redirect(newUrl);
  19. response.cookies.set("i18next", langPref);
  20. return response;
  21. }
  22. // Matcher for using the auth middleware
  23. return PUBLIC_ROUTES.some((route) => req.nextUrl.pathname.startsWith(route))
  24. ? NextResponse.next() // Return normal response
  25. : await authMiddleware(req, event); // Let auth middleware handle response
  26. }