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"