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';`; csp += `object-src 'self' data:;`; csp += `script-src 'self' https://www.googletagmanager.com 'nonce-${generatedNonce}' ${ process.env.NODE_ENV != "production" ? " 'unsafe-eval';" : " ;" }`; csp += `img-src 'self' https://www.googletagmanager.com https://gov.wales https://www.google-analytics.com 'nonce-${generatedNonce}' data:;`; csp += `style-src 'self' https://fonts.googleapis.com 'unsafe-inline' data:;`; return (
{useGATracking && (