import Document, { Html, Head, Main, NextScript } from "next/document"; import SkipLink from "../components/skiplink"; import { Tracking, TrackingNoScript } from "../components/tracking"; import { nanoid } from "nanoid"; import { setCookie } from "nookies"; import Script from "next/script"; class MyDocument extends Document { static async getInitialProps(ctx) { const initialProps = await Document.getInitialProps(ctx); let useGATracking = false; 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; } const cookieObj = ctx.req.cookies.CookiePolicy || {}; console.log("useGATracking: ", useGATracking); setCookie(ctx, "pedw_locale", ctx.locale, { path: "/", }); return { ...initialProps, useGATracking, cookieObj }; } render() { const googleTagManagerID = process.env.GOOGLE_TAG_MANAGER || null; const { useGATracking, locale, cookieObj } = 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 += `default-src 'self' https://www.google-analytics.com;`; csp += `connect-src 'self' http://127.0.0.1 https://maps.googleapis.com https://uksouth-1.in.applicationinsights.azure.com https://ukwest-0.in.applicationinsights.azure.com https://js.monitor.azure.com https://region1.google-analytics.com;`; csp += `script-src 'self' 'unsafe-eval' 'unsafe-inline' https://maps.googleapis.com https://ukwest-0.in.applicationinsights.azure.com https://region1.google-analytics.com https://www.google-analytics.com/ https://tagmanager.google.com/ https://www.googletagmanager.com/;`; csp += `style-src 'self' 'unsafe-inline' https://pro.fontawesome.com/ https://www.google-analytics.com https://tagmanager.google.com/ https://www.googletagmanager.com/ https://fonts.googleapis.com/;`; csp += `img-src 'self' 'unsafe-inline' https://maps.gstatic.com https://maps.googleapis.com https://www.gov.wales https://gov.wales https://fonts.gstatic.com https://www.googletagmanager.com https://www.google-analytics.com https://ssl.gstatic.com/ blob: data:;`; csp += `font-src 'self' 'unsafe-inline' https://pro.fontawesome.com/ https://fonts.gstatic.com/ data:;`; csp += `frame-src https://datamap.gov.wales`; return ( {useGATracking && ( )} {/* */} {useGATracking && ( )} {!process.browser && ( <>