Files
pedwfrontend/pages/_document.js
T
Robert Bond 15c35d201e Merged PR 2244: added condition to fix log in journey in welsh if no account in crm
added condition to fix log in journey in welsh if no account in crm

Related work items: #22081, #22303
2026-04-13 15:54:51 +00:00

112 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:;`;
csp += `frame-src https://datamap.gov.wales`;
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;