import Document, { Html, Head, Main, NextScript } from "next/document"; import SkipLink from "../components/skiplink"; import { Tracking, TrackingNoScript } from "../components/tracking"; import basicAuthMiddleware from "nextjs-basic-auth-middleware"; import { nanoid } from "nanoid"; class MyDocument extends Document { static async getInitialProps(ctx) { const initialProps = await Document.getInitialProps(ctx); let useGATracking = false; //remove this block when not need after softlaunch // let hasBasicAuth = // typeof process.env.BASIC_AUTH_CREDENTIALS != "undefined"; // console.log("hasbasicAuth:", hasBasicAuth); // if (ctx.req && ctx.res) { // hasBasicAuth && // (await basicAuthMiddleware(ctx.req, ctx.res, { // users: process.env.BASIC_AUTH_CREDENTIALS, // })); // } if (ctx.req && ctx.req.headers.cookie) { typeof ctx.req.cookies.CookiePolicy != "undefined" ? JSON.parse(ctx.req.cookies.CookiePolicy).usage == "accepted" ? (useGATracking = true) : (useGATracking = false) : (useGATracking = true); } else { useGATracking = false; } return { ...initialProps, useGATracking }; } render() { const googleTagManagerID = process.env.GOOGLE_TAG_MANAGER || null; const { useGATracking } = this.props; const generatedNonce = nanoid(); let csp = ``; csp += `base-uri 'self';`; csp += `form-action 'self' ` + process.env.NEXTAUTH_URL + ` ;`; csp += `object-src 'self' data:;`; csp += `script-src 'self' ` + process.env.NEXTAUTH_URL + ` 'unsafe-inline' https://www.googletagmanager.com https://maps.googleapis.com 'nonce-${generatedNonce}' 'unsafe-eval';`; csp += `style-src 'self' https://fonts.googleapis.com 'unsafe-inline' data:;`; return ( {useGATracking && ( )} {useGATracking && ( )} {!process.browser && ( <> )}
); } } export default MyDocument;