Files
pedwfrontend/pages/_document.js
T

111 lines
4.9 KiB
JavaScript

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: "/",
});
const headers = ctx.req?.headers;
const generatedNonce = headers?.["x-nonce"];
return { ...initialProps, useGATracking, cookieObj, generatedNonce };
}
render() {
const googleTagManagerID = process.env.GOOGLE_TAG_MANAGER || null;
const { useGATracking, locale, cookieObj } = this.props;
//const generatedNonce = nanoid();
const generatedNonce = this.props.generatedNonce;
console.log("this is the nonce:", generatedNonce);
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:;`;
return (
<Html lang={locale}>
<Head nonce={generatedNonce}>
{/* <meta httpEquiv="Content-Security-Policy" content={csp} /> */}
{useGATracking && (
<Tracking
googleTagManagerID={"G-GTWW3JT03Z"}
nonce={generatedNonce}
cookieObj={cookieObj}
/>
)}
{/* <GoogleAnalytics gaId={googleTagManagerID} /> */}
</Head>
<body className="js-enabled">
{useGATracking && (
<TrackingNoScript
nonce={generatedNonce}
googleTagManagerID={googleTagManagerID}
/>
)}
{!process.browser && (
<>
<script
nonce={generatedNonce}
dangerouslySetInnerHTML={{
__html:
"window.switchDomain = '" +
process.env.I18N_DOMAIN +
"'",
}}
/>
<script
nonce={generatedNonce}
dangerouslySetInnerHTML={{
__html:
"window.apiRoot = '" +
process.env.API_ROOT +
"'",
}}
/>
</>
)}
<SkipLink />
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;