diff --git a/package.json b/package.json
index 98bdb964..7e34ecaa 100644
--- a/package.json
+++ b/package.json
@@ -63,7 +63,7 @@
"express-session": "^1.18.1",
"git-rev-sync": "^3.0.2",
"glob": "^11.0.0",
- "govuk-frontend": "^5.0.0",
+ "govuk-frontend": "5.11.1",
"helmet": "^8.0.0",
"ioredis": "^5.3.0",
"jquery": "^3.5.1",
diff --git a/src/main/app.ts b/src/main/app.ts
index ba80459e..a670f5de 100644
--- a/src/main/app.ts
+++ b/src/main/app.ts
@@ -31,12 +31,20 @@ const options = {
};
app.use(compression());
-app.use(favicon(path.join(__dirname, '/public/assets/images/favicon.ico')));
+app.use(favicon(path.join(__dirname, '/public/assets/rebrand/images/favicon.ico')));
app.use(express.static(path.join(__dirname, 'public'), options));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
+app.use((req, res, next) => {
+ const host = req.get('host');
+ if (host) {
+ res.locals.serviceBaseUrl = `${req.protocol}://${host}`;
+ }
+ next();
+});
+
LaunchDarklyClient.initialise();
diff --git a/src/main/modules/nunjucks/index.ts b/src/main/modules/nunjucks/index.ts
index ee9cb870..5aae827d 100644
--- a/src/main/modules/nunjucks/index.ts
+++ b/src/main/modules/nunjucks/index.ts
@@ -27,6 +27,7 @@ export class Nunjucks {
env.addGlobal('nonce', app.locals.nonce);
env.addGlobal('env', app.locals.ENV);
+ env.addGlobal('govukRebrand', true);
if (app.locals.ENV === 'development') {
env.addGlobal('idamEnabled', config.get('services.idam-api.enabled'));
diff --git a/src/main/modules/oidc/index.ts b/src/main/modules/oidc/index.ts
index 6b8cec2c..4528a4e5 100644
--- a/src/main/modules/oidc/index.ts
+++ b/src/main/modules/oidc/index.ts
@@ -23,6 +23,14 @@ export class OidcMiddleware {
'/main-dev.css',
'/assets/images/favicon.ico',
'/assets/manifest.json',
+ '/assets/rebrand/images/favicon.ico',
+ '/assets/rebrand/images/favicon.svg',
+ '/assets/rebrand/images/govuk-icon-180.png',
+ '/assets/rebrand/images/govuk-icon-192.png',
+ '/assets/rebrand/images/govuk-icon-512.png',
+ '/assets/rebrand/images/govuk-icon-mask.svg',
+ '/assets/rebrand/images/govuk-opengraph-image.png',
+ '/assets/rebrand/manifest.json',
];
private authService = new AuthService(config);
diff --git a/src/main/views/common/navigation.njk b/src/main/views/common/navigation.njk
index a8534492..e07cb681 100644
--- a/src/main/views/common/navigation.njk
+++ b/src/main/views/common/navigation.njk
@@ -1,29 +1,69 @@
-
-
-
-
- {% if userRoles and 'cft-audit-investigator' in userRoles %}
-
- Case audit
+{% set hasAuditInvestigatorRole = userRoles and 'cft-audit-investigator' in userRoles %}
+{% set hasServiceLogsRole = userRoles and 'cft-service-logs' in userRoles %}
+{% set showChallengedAccess = hasAuditInvestigatorRole and challengedAccessEnabled %}
+
+
diff --git a/src/main/views/common/template.njk b/src/main/views/common/template.njk
index fd5a42ce..1940cea2 100644
--- a/src/main/views/common/template.njk
+++ b/src/main/views/common/template.njk
@@ -7,6 +7,14 @@
{% block pageTitle %}GOV.UK - Log and Audit{% endblock %}
{% block head %}
+
+
+
+
+
+
+ {% set ogImageUrl = (serviceBaseUrl ~ '/assets/rebrand/images/govuk-opengraph-image.png') if serviceBaseUrl else '/assets/rebrand/images/govuk-opengraph-image.png' %}
+
{% include "common/dynatrace/head.njk" %}
{% include "common/webpack/css.njk" %}
{% include "common/webpack/js.njk" %}
@@ -101,6 +109,7 @@
homepageUrl: "/",
serviceName: "Log and Audit",
serviceUrl: "/",
+ rebrand: true,
navigation: [
{
href: "/unset-role/cft-audit-investigator" if userRoles and 'cft-audit-investigator' in userRoles else "/set-role/cft-audit-investigator",
@@ -121,6 +130,7 @@
homepageUrl: "/",
serviceName: "Log and Audit",
serviceUrl: "/",
+ rebrand: true,
navigation: [
{
href: "/logout" if isLoggedIn else "/login",
@@ -138,13 +148,17 @@
{% include "./timeout-dialog.njk" %}
{% endblock %}
-{% include "./navigation.njk" %}
+{% endblock %}
+{% block main %}
+ {% include "./navigation.njk" %}
+ {{ super() }}
{% endblock %}
{% block footer %}
{{ govukFooter({
+ rebrand: true,
meta: {
items: [
{
diff --git a/src/test/a11y/a11y.ts b/src/test/a11y/a11y.ts
index 4f77b3b2..49f0b7c6 100644
--- a/src/test/a11y/a11y.ts
+++ b/src/test/a11y/a11y.ts
@@ -42,7 +42,7 @@ function runPally(url: string, cookies: string = ''): Promise {
let filename = fullurl.replace(/https?:\/\//gi, '').replace(/[^a-zA-Z0-9.-]/g, '_');
return pa11y(fullurl, {
- hideElements: '.govuk-footer__licence-logo, .govuk-header__logotype-crown',
+ hideElements: '.govuk-footer__licence-logo, .govuk-footer__crown, .govuk-header__logotype',
screenCapture: `${screenshotDir}/${filename}.png`,
wait: 500,
headers: {
diff --git a/webpack/govukFrontend.js b/webpack/govukFrontend.js
index 186e6a77..60374c10 100644
--- a/webpack/govukFrontend.js
+++ b/webpack/govukFrontend.js
@@ -9,11 +9,13 @@ const components = path.resolve(root, 'components');
const assets = path.resolve(root, 'assets');
const images = path.resolve(assets, 'images');
const fonts = path.resolve(assets, 'fonts');
+const rebrandAssets = path.resolve(assets, 'rebrand');
const copyGovukTemplateAssets = new CopyWebpackPlugin({
patterns: [
{ from: images, to: 'assets/images' },
{ from: fonts, to: 'assets/fonts' },
+ { from: rebrandAssets, to: 'assets/rebrand' },
{ from: `${assets}/manifest.json`, to: 'assets/manifest.json' },
],
});
diff --git a/yarn.lock b/yarn.lock
index 83335e8b..4d4e9ea9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10251,10 +10251,10 @@ __metadata:
languageName: node
linkType: hard
-"govuk-frontend@npm:^5.0.0":
- version: 5.12.0
- resolution: "govuk-frontend@npm:5.12.0"
- checksum: 10/966974213fc243327217112d6113cc07957dbd55496e8e3beecac74dc92b243b0fa7d5368a17ea6e4f3dd7066f3cb969f5891f278b3aada0541c37dde5aa8054
+"govuk-frontend@npm:5.11.1":
+ version: 5.11.1
+ resolution: "govuk-frontend@npm:5.11.1"
+ checksum: 10/fc4916785a8bd87315eb2682ed581aca1a65aade9e3e7a4a2d979cd01fb7fdf8811357ba6677966a86f01411b3bfd5db006e38f58b01418da45e52f76a8f2040
languageName: node
linkType: hard
@@ -12320,7 +12320,7 @@ __metadata:
git-rev-sync: "npm:^3.0.2"
glob: "npm:^11.0.0"
globals: "npm:^16.0.0"
- govuk-frontend: "npm:^5.0.0"
+ govuk-frontend: "npm:5.11.1"
helmet: "npm:^8.0.0"
html-webpack-plugin: "npm:^5.3.2"
html_codesniffer: "npm:^2.5.1"