updated translations and oauth

This commit is contained in:
2021-11-19 09:30:04 +00:00
parent 3c38da1400
commit f9f7b777e7
91 changed files with 2519 additions and 1275 deletions
+40 -19
View File
@@ -1,35 +1,56 @@
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 basicAuthMiddleware from "nextjs-basic-auth-middleware";
class MyDocument extends Document {
// static async getInitialProps(ctx) {
// const initialProps = await Document.getInitialProps(ctx);
// if (ctx.req && ctx.res) {
// await basicAuthMiddleware(ctx.req, ctx.res, {
// users: [
// {
// name: "rehab",
// password: "preventTesting",
// },
// ],
// });
// }
// return { ...initialProps };
// }
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);
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;
return (
<Html lang="en">
<Head>
<Tracking googleTagManagerID={googleTagManagerID} />
{useGATracking && (
<Tracking googleTagManagerID={googleTagManagerID} />
)}
</Head>
<body className="js-enabled">
<TrackingNoScript googleTagManagerID={googleTagManagerID} />
{useGATracking && (
<TrackingNoScript
googleTagManagerID={googleTagManagerID}
/>
)}
{!process.browser && (
<script>
window.switchDomain = `{process.env.I18N_DOMAIN}`
+91
View File
@@ -0,0 +1,91 @@
import _ from "lodash";
import { useState, useEffect, useRef } from "react";
import Head from "next/head";
import Header from "../components/header";
import ServiceBanner from "../components/servicebanner";
import CookieBanner from "../components/cookieBanner";
import Breadcrumbs from "../components/breadcrumbs";
import Main from "../components/main";
import Footer from "../components/footer";
import Errorpage from "../components/errorpage";
import styles from "../styles/Home.module.css";
import { useSelector, shallowEqual, connect } from "react-redux";
import { wrapper } from "../store/store";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import { getIncidents } from "../actions";
import { parseCookies } from "nookies";
import AccessibilityStatement from "../components/accessibility";
const Accessibility = (props) => {
const { footerLinks, pages, showLogin } = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
return (
<div>
<Head>
<title>{t("common:service-name")}</title>
{/* Language by default is EN, if multilingual site this will need updated */}
<meta
key="og:locale"
property="og:locale"
content={router.locale}
/>
{/* If they have a Twitter Handle, include the meta details below */}
<meta
key="og:site_name"
property="og:site_name"
content={t("common:service-name")}
/>
<meta
key="twitter:site"
property="twitter:site"
content="@UKGovWales"
/>
<meta
name="description"
content={t("common:service-description")}
/>
<meta
property="og:site_name"
content={t("common:gov-wales-label")}
/>
<meta property="og:type" content="website" />
<meta property="og:url" content={t("common:gov-wales-link")} />
<meta
property="og:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-1200.png"
/>
<meta name="twitter:card" content="summary" />
<meta
name="twitter:title"
content={t("common:gov-wales-label")}
/>
<meta
name="twitter:url"
content={t("common:gov-wales-link") + router.pathname}
/>
<meta
name="twitter:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-120.png"
/>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName="Appeals Casework Portal" />
<div className="govuk-width-container">
<Breadcrumbs />
<ServiceBanner />
<AccessibilityStatement />
</div>
<Footer footerLinks={footerLinks} />
</div>
</div>
);
};
export default Accessibility; //connect(mapStateToProps)(Home);
+3 -2
View File
@@ -28,7 +28,7 @@ import {
getLPA,
updateCase,
createCase,
getSASToken,
getToken,
} from "../actions";
import { setLPA } from "../store/lpa/action";
@@ -139,7 +139,8 @@ const Home = (props) => {
export const getServerSideProps = wrapper.getServerSideProps(
(store) =>
async ({ query, req, res }) => {
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
const [appealTypeData, lpaData] = await Promise.all([
await getAppealsTypes(token),
+3 -6
View File
@@ -22,11 +22,7 @@ import {
setSearchDetails,
getSearchResultsObj,
} from "../store/searchOutput/action";
import {
getAdvancedSearch,
getBasicSearchDetails,
getSASToken,
} from "../actions";
import { getAdvancedSearch, getBasicSearchDetails, getToken } from "../actions";
const Home = (props) => {
const { footerLinks, pages } = props;
@@ -127,7 +123,8 @@ export const getServerSideProps = wrapper.getServerSideProps(
console.log("query-", query);
//console.log("search array:", Object.entries(query));
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
const searchResultsObj = await getAdvancedSearch(token, query);
const searchDetailsObj = await getSearchDetails(
+127 -86
View File
@@ -1,7 +1,8 @@
import axios from "axios";
import https from "https";
import CryptoJS from "crypto-js";
import { response } from "express";
import HmacSHA256 from "crypto-js/hmac-sha256";
import { rest } from "lodash";
const PROXY_RELAY_URL =
"https://" +
@@ -10,74 +11,111 @@ const PROXY_RELAY_URL =
(process.env.RELAYPATH || "dev-pedw-hc") +
"/";
const getSASToken = () => {
var m_ResourceURI =
process.env.RELAYURI || "dev-pedw-ns.servicebus.windows.net";
var m_Path = process.env.RELAYPATH || "dev-pedw-hc";
var m_SasKey =
process.env.SASKEY || "Ml0Y/S/nfRcmIrHFRkO4jNm2J3iH52TSxPiak7+E1+Y=";
var m_SasKeyName = process.env.SASKEYNAME || "devpedwnspolicy";
const accessTokenEndpoint = process.env.ACCESS_TOKEN_ENDPOINT;
const tenantId = process.env.TENANT;
var encodedResourceUri = encodeURIComponent(
"https://" + m_ResourceURI + "/" + m_Path + "/"
);
const tokenBody =
"grant_type=" +
process.env.GRANT_TYPE +
"&client_id=" +
process.env.CLIENT_ID +
"&client_secret=" +
process.env.CLIENT_SECRET +
"&scope=" +
"https://" +
process.env.RELAYURI +
"/.default";
var t0 = new Date(1970, 1, 1, 0, 0, 0, 0);
var t1 = new Date();
var expireInSeconds =
+(31 * 24 * 3600) + 3600 + (((t1.getTime() - t0.getTime()) / 1000) | 0);
//the line below is a hack that converts to UTF8
var plainSignature = JSON.parse(
JSON.stringify(encodedResourceUri + "\n" + expireInSeconds)
);
var hash = CryptoJS.HmacSHA256(plainSignature, m_SasKey);
var base64HashValue = CryptoJS.enc.Base64.stringify(hash);
var token =
"SharedAccessSignature sr=" +
encodedResourceUri +
"&sig=" +
encodeURIComponent(base64HashValue) +
"&se=" +
expireInSeconds +
"&skn=" +
m_SasKeyName;
return token;
const tokenConfig = {
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Cache-Control": "no-cache",
},
};
export default async function ApiProxy(req, res) {
//console.log(req.method);
export const getToken = () => {
return axios
.post(
`${accessTokenEndpoint}${tenantId}/oauth2/v2.0/token`,
tokenBody,
tokenConfig
)
.then((res) => res.data)
.then((data) => {
return data;
})
.catch((error) => {
console.log("error :", error.response);
// return error;
});
};
function checkProxyPath(queryPath) {
const WORDKEY = process.env.NEXT_PUBLIC_HASHKEY;
var hashPath =
queryPath.indexOf("/api/proxy/") == -1
? queryPath
: queryPath.split("/api/proxy/")[1];
const wordKey = WORDKEY;
var hashlink = CryptoJS.HmacSHA256(
decodeURI(hashPath),
CryptoJS.enc.Hex.parse(wordKey)
);
hashlink = hashlink.toString(CryptoJS.enc.Hex);
return hashlink;
}
export default async function ApiProxy(req, res) {
var data = JSON.stringify(req.body);
const SASToken = getSASToken();
var accessToken = await getToken();
accessToken = accessToken.access_token;
const isDocument = req.url.indexOf("/documents/download") > -1;
let hashCheckPath = isDocument
? req.url.split("?hash=")[0]
: req.url.split("&hash=")[0];
let hashCheckValue = isDocument
? req.url.split("?hash=")[1]
: req.url.split("&hash=")[1];
let hashFromRequest = checkProxyPath(hashCheckPath);
var configNoData = {
method: req.method,
//url: PROXY_RELAY_URL + updateFormCollection + "(" + incidentId + ")",
url: PROXY_RELAY_URL + req.url.split("/api/proxy/")[1],
url:
PROXY_RELAY_URL +
req.url.split("&hash=")[0].split("/api/proxy/")[1] +
"&hash=" +
req.url.split("&hash=")[1],
headers: {
"OData-MaxVersion": "4.0",
"OData-Version": "4.0",
"Accept": "application/json",
"Prefer":
'odata.include-annotations="*",return=representation,odata.maxpagesize=10',
"Authorization": SASToken,
"Authorization": "Bearer " + accessToken,
"Content-Type": "application/json",
},
};
var config = {
method: req.method,
url: PROXY_RELAY_URL + req.query.route[0],
url:
PROXY_RELAY_URL +
req.query.route[0] +
"&hash=" +
req.url.split("&hash=")[1],
headers: {
"OData-MaxVersion": "4.0",
"OData-Version": "4.0",
"Accept": "application/json",
"Prefer": 'odata.include-annotations="*",return=representation',
"Authorization": SASToken,
"Authorization": "Bearer " + accessToken,
"Content-Type": "application/json",
},
data: data,
@@ -85,58 +123,61 @@ export default async function ApiProxy(req, res) {
var configDocument = {
method: req.method,
url: PROXY_RELAY_URL + req.url.split("/api/proxy/")[1],
url:
PROXY_RELAY_URL +
req.url.split("?hash=")[0].split("/api/proxy/")[1] +
"?hash=" +
req.url.split("?hash=")[1],
headers: {
"OData-MaxVersion": "4.0",
"OData-Version": "4.0",
"Accept": "application/json",
"Prefer": 'odata.include-annotations="*",return=representation',
"Authorization": SASToken,
"Authorization": "Bearer " + accessToken,
"Content-Type": "application/json",
},
responseType: "arraybuffer",
};
return new Promise((resolve, reject) => {
let apiPath = req.url.split("/api/proxy/")[1];
let hasDocument = apiPath.indexOf("/download") > 0 ? true : false;
// console.log(
// "//////////////",
// req.url.split("/api/proxy/")[1],
// PROXY_RELAY_URL + req.query.route[0],
// req.method,
// hasDocument
// );
axios(
req.method == "GET"
? hasDocument
? configDocument
: configNoData
: config
)
.then((response) => {
res.statusCode = 200;
if (hasDocument) {
res.setHeader(
"Content-disposition",
"attachment; filename=" +
response.headers["content-disposition"].split(
"filename="
)[1]
);
res.end(response.data);
} else {
res.setHeader("Content-Type", "application/json");
// res.setHeader("Cache-Control", "max-age=1800000");
res.end(JSON.stringify(response.data));
}
resolve();
})
.catch((error) => {
console.log("proxy response error", error);
res.json(error);
res.status(405).end();
return resolve();
});
});
if (hashCheckValue == hashFromRequest) {
return new Promise((resolve, reject) => {
let hasDocument =
hashCheckPath.indexOf("/download") > 0 ? true : false;
axios(
req.method == "GET"
? hasDocument
? configDocument
: configNoData
: config
)
.then((response) => {
res.statusCode = 200;
if (hasDocument) {
res.setHeader(
"Content-disposition",
"attachment; filename=" +
response.headers["content-disposition"].split(
"filename="
)[1]
);
res.end(response.data);
} else {
res.setHeader("Content-Type", "application/json");
// res.setHeader("Cache-Control", "max-age=1800000");
res.end(JSON.stringify(response.data));
}
resolve();
})
.catch((error) => {
console.log("proxy response error", error);
//res.json(error);
res.status(405).end();
return resolve();
});
});
} else {
res.status(405).end();
return resolve();
}
}
+3
View File
@@ -70,6 +70,9 @@ const Home = (props) => {
props.currentView.caseReference.appealType
}
incidentid={props.currentView.caseReference.incidentid}
representationsObj={
props.searchResultsObj.representationsObj
}
/>
</div>
<Footer footerLinks={footerLinks} />
+91
View File
@@ -0,0 +1,91 @@
import _ from "lodash";
import { useState, useEffect, useRef } from "react";
import Head from "next/head";
import Header from "../components/header";
import ServiceBanner from "../components/servicebanner";
import CookieBanner from "../components/cookieBanner";
import Breadcrumbs from "../components/breadcrumbs";
import Main from "../components/main";
import Footer from "../components/footer";
import Errorpage from "../components/errorpage";
import styles from "../styles/Home.module.css";
import { useSelector, shallowEqual, connect } from "react-redux";
import { wrapper } from "../store/store";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import { getIncidents } from "../actions";
import { parseCookies } from "nookies";
import CookiePolicy from "../components/cookiePolicy";
const CookieDetails = (props) => {
const { footerLinks, pages, showLogin } = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
return (
<div>
<Head>
<title>{t("common:service-name")}</title>
{/* Language by default is EN, if multilingual site this will need updated */}
<meta
key="og:locale"
property="og:locale"
content={router.locale}
/>
{/* If they have a Twitter Handle, include the meta details below */}
<meta
key="og:site_name"
property="og:site_name"
content={t("common:service-name")}
/>
<meta
key="twitter:site"
property="twitter:site"
content="@UKGovWales"
/>
<meta
name="description"
content={t("common:service-description")}
/>
<meta
property="og:site_name"
content={t("common:gov-wales-label")}
/>
<meta property="og:type" content="website" />
<meta property="og:url" content={t("common:gov-wales-link")} />
<meta
property="og:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-1200.png"
/>
<meta name="twitter:card" content="summary" />
<meta
name="twitter:title"
content={t("common:gov-wales-label")}
/>
<meta
name="twitter:url"
content={t("common:gov-wales-link") + router.pathname}
/>
<meta
name="twitter:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-120.png"
/>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName="Appeals Casework Portal" />
<div className="govuk-width-container">
<Breadcrumbs />
<ServiceBanner />
<CookiePolicy />
</div>
<Footer footerLinks={footerLinks} />
</div>
</div>
);
};
export default CookieDetails; //connect(mapStateToProps)(Home);
+3 -6
View File
@@ -24,11 +24,7 @@ import {
setSearchDetails,
getSearchResultsObj,
} from "../store/searchOutput/action";
import {
getBasicDNSSearch,
getBasicSearchDetails,
getSASToken,
} from "../actions";
import { getBasicDNSSearch, getBasicSearchDetails, getToken } from "../actions";
const Home = (props) => {
const { footerLinks, pages } = props;
@@ -127,7 +123,8 @@ export const getServerSideProps = wrapper.getServerSideProps(
async ({ query, req, res }) => {
console.log("query-", query);
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
let searchResultsObj = await getBasicDNSSearch(token);
searchResultsObj =
+1
View File
@@ -32,6 +32,7 @@ const CookieManagement = (props) => {
<Header courseName="Appeals Casework Portal" />
<div className="govuk-width-container">
<Breadcrumbs />
<ServiceBanner />
<CookieManagementMain />
</div>
<Footer footerLinks={footerLinks} />
+3 -2
View File
@@ -28,7 +28,7 @@ import {
getLPA,
updateCase,
createCase,
getSASToken,
getToken,
} from "../../actions";
import { setLPA } from "../../store/lpa/action";
@@ -77,7 +77,8 @@ const Home = (props) => {
export const getServerSideProps = wrapper.getServerSideProps(
(store) =>
async ({ query, req, res }) => {
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
const [appealTypeData, lpaData] = await Promise.all([
await getAppealsTypes(token),
+3 -2
View File
@@ -22,7 +22,7 @@ import {
setSearchResults,
setSearchDetails,
} from "../../store/searchOutput/action";
import { getAdvancedSearch, getSASToken } from "../../actions";
import { getAdvancedSearch, getToken } from "../../actions";
const Home = (props) => {
const { footerLinks, pages } = props;
@@ -62,7 +62,8 @@ export const getServerSideProps = wrapper.getServerSideProps(
console.log("query-", query);
//console.log("search array:", Object.entries(query));
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
const searchResultsObj = await getAdvancedSearch(token, query);
const searchDetailsObj = await getSearchDetails(
+20 -1
View File
@@ -16,7 +16,7 @@ import useTranslation from "next-translate/useTranslation";
import Case from "../../components/case";
const Home = (props) => {
const { footerLinks, pages } = props;
const { footerLinks, pages, showRepresentations } = props;
let { t, lang } = useTranslation();
const router = useRouter();
@@ -73,6 +73,10 @@ const Home = (props) => {
props.currentView.caseReference.appealType
}
incidentid={props.currentView.caseReference.incidentid}
representationsObj={
props.searchResultsObj.representationsObj
}
showRepresentations={showRepresentations}
/>
</div>
<Footer footerLinks={footerLinks} />
@@ -81,6 +85,21 @@ const Home = (props) => {
);
};
export const getServerSideProps = wrapper.getServerSideProps(
(store) => async (ctx) => {
const { query, req, res } = ctx;
const showRepresentationsCheck =
process.env.SHOWREPRESENTATIONS || false;
console.log("Show representation module: ", showRepresentationsCheck);
return {
props: { showRepresentations: showRepresentationsCheck },
};
}
);
const mapStateToProps = (state) => {
//console.log(state);
+7 -3
View File
@@ -35,7 +35,7 @@ import {
setAwaitingSubmissionDetails,
} from "../../store/awaitingSubmission/action";
import {
getSASToken,
getToken,
getPersonalAccount,
getMyCases,
getMyRepresentations,
@@ -152,7 +152,10 @@ export const getServerSideProps = wrapper.getServerSideProps(
const { cookies } = req;
const token = await getSASToken();
console.log("the cookoies", cookies);
let token = await getToken();
token = token.access_token;
let loggedInUser = cookies.pinsUser;
@@ -171,6 +174,7 @@ export const getServerSideProps = wrapper.getServerSideProps(
]);
//const cookiesMaker = nookies.get(ctx)
console.log(accountDetails);
const [
myCasesDetails,
myRepresentationsDetails,
@@ -199,7 +203,7 @@ export const getServerSideProps = wrapper.getServerSideProps(
);
const getDetails = (token, resultsObj, detailsType) => {
//console.log(resultsObj);
console.log(resultsObj);
let detailsArr = [];
resultsObj = resultsObj.value;
const detailsObj = resultsObj.map((searchDetail, index) => {
+3 -2
View File
@@ -39,7 +39,7 @@ import {
getSearchDocumentHistory,
getWatchedCases,
getPortalModuleDetails,
getSASToken,
getToken,
} from "../../actions";
const Home = (props) => {
@@ -82,7 +82,8 @@ export const getServerSideProps = wrapper.getServerSideProps(
const { cookies } = req;
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
let loggedInUser = cookies.pinsUser;
+3 -2
View File
@@ -28,7 +28,7 @@ import {
} from "../../store/appealType/action";
import { setForm, getFormObj } from "../../store/formData/action";
import {
getSASToken,
getToken,
getFormData,
getAppealsTypes,
getMandatoryFields,
@@ -331,7 +331,8 @@ export const getServerSideProps = wrapper.getServerSideProps(
console.log("the query", query);
let loggedInUser = cookies.pinsUser;
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
const [
caseReferenceData,
appealTypeData,
+3 -2
View File
@@ -34,7 +34,7 @@ import {
getLPA,
updateCase,
createCase,
getSASToken,
getToken,
} from "../../actions";
import { setLPA } from "../../store/lpa/action";
@@ -150,7 +150,8 @@ export const getServerSideProps = wrapper.getServerSideProps(
let loggedInUser = cookies.pinsUser;
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
const [appealTypeData, lpaData, caseData] = await Promise.all([
await getAppealsTypes(token),
+2 -1
View File
@@ -42,7 +42,8 @@ const Home = (props) => {
// export const getServerSideProps = wrapper.getServerSideProps(
// async ({ locale, store, req, res }) => {
// const token = await getToken();
// let token = await getToken()
// token = token.access_token;
// let accessToken = token.access_token;
// const apiRoot = process.browser ? window.API_ROOT : process.env.API_ROOT;
+91
View File
@@ -0,0 +1,91 @@
import _ from "lodash";
import { useState, useEffect, useRef } from "react";
import Head from "next/head";
import Header from "../components/header";
import ServiceBanner from "../components/servicebanner";
import CookieBanner from "../components/cookieBanner";
import Breadcrumbs from "../components/breadcrumbs";
import Main from "../components/main";
import Footer from "../components/footer";
import Errorpage from "../components/errorpage";
import styles from "../styles/Home.module.css";
import { useSelector, shallowEqual, connect } from "react-redux";
import { wrapper } from "../store/store";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import { getIncidents } from "../actions";
import { parseCookies } from "nookies";
import PrivacyStatement from "../components/privacy";
const Privacy = (props) => {
const { footerLinks, pages, showLogin } = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
return (
<div>
<Head>
<title>{t("common:service-name")}</title>
{/* Language by default is EN, if multilingual site this will need updated */}
<meta
key="og:locale"
property="og:locale"
content={router.locale}
/>
{/* If they have a Twitter Handle, include the meta details below */}
<meta
key="og:site_name"
property="og:site_name"
content={t("common:service-name")}
/>
<meta
key="twitter:site"
property="twitter:site"
content="@UKGovWales"
/>
<meta
name="description"
content={t("common:service-description")}
/>
<meta
property="og:site_name"
content={t("common:gov-wales-label")}
/>
<meta property="og:type" content="website" />
<meta property="og:url" content={t("common:gov-wales-link")} />
<meta
property="og:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-1200.png"
/>
<meta name="twitter:card" content="summary" />
<meta
name="twitter:title"
content={t("common:gov-wales-label")}
/>
<meta
name="twitter:url"
content={t("common:gov-wales-link") + router.pathname}
/>
<meta
name="twitter:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-120.png"
/>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName="Appeals Casework Portal" />
<div className="govuk-width-container">
<Breadcrumbs />
<ServiceBanner />
<PrivacyStatement />
</div>
<Footer footerLinks={footerLinks} />
</div>
</div>
);
};
export default Privacy; //connect(mapStateToProps)(Home);
+3 -2
View File
@@ -21,7 +21,7 @@ import {
setSearchDetails,
getSearchResultsObj,
} from "../store/searchOutput/action";
import { getBasicSearch, getBasicSearchDetails, getSASToken } from "../actions";
import { getBasicSearch, getBasicSearchDetails, getToken } from "../actions";
import { getSearchDetails } from "../components/utils";
const Home = (props) => {
@@ -121,7 +121,8 @@ export const getServerSideProps = wrapper.getServerSideProps(
async ({ query, req, res }) => {
console.log("query-", query);
const token = await getSASToken();
let token = await getToken();
token = token.access_token;
let searchResultsObj = await getBasicSearch(token, query.q);
+91
View File
@@ -0,0 +1,91 @@
import _ from "lodash";
import { useState, useEffect, useRef } from "react";
import Head from "next/head";
import Header from "../components/header";
import ServiceBanner from "../components/servicebanner";
import CookieBanner from "../components/cookieBanner";
import Breadcrumbs from "../components/breadcrumbs";
import Main from "../components/main";
import Footer from "../components/footer";
import Errorpage from "../components/errorpage";
import styles from "../styles/Home.module.css";
import { useSelector, shallowEqual, connect } from "react-redux";
import { wrapper } from "../store/store";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import { getIncidents } from "../actions";
import { parseCookies } from "nookies";
import TermsAndConditionsStatement from "../components/tandc";
const TandC = (props) => {
const { footerLinks, pages, showLogin } = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
return (
<div>
<Head>
<title>{t("common:service-name")}</title>
{/* Language by default is EN, if multilingual site this will need updated */}
<meta
key="og:locale"
property="og:locale"
content={router.locale}
/>
{/* If they have a Twitter Handle, include the meta details below */}
<meta
key="og:site_name"
property="og:site_name"
content={t("common:service-name")}
/>
<meta
key="twitter:site"
property="twitter:site"
content="@UKGovWales"
/>
<meta
name="description"
content={t("common:service-description")}
/>
<meta
property="og:site_name"
content={t("common:gov-wales-label")}
/>
<meta property="og:type" content="website" />
<meta property="og:url" content={t("common:gov-wales-link")} />
<meta
property="og:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-1200.png"
/>
<meta name="twitter:card" content="summary" />
<meta
name="twitter:title"
content={t("common:gov-wales-label")}
/>
<meta
name="twitter:url"
content={t("common:gov-wales-link") + router.pathname}
/>
<meta
name="twitter:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-120.png"
/>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName="Appeals Casework Portal" />
<div className="govuk-width-container">
<Breadcrumbs />
<ServiceBanner />
<TermsAndConditionsStatement />
</div>
<Footer footerLinks={footerLinks} />
</div>
</div>
);
};
export default TandC; //connect(mapStateToProps)(Home);