diff --git a/src/client/javascripts/maps.js b/src/client/javascripts/maps.js new file mode 100644 index 000000000..0cc8ddab7 --- /dev/null +++ b/src/client/javascripts/maps.js @@ -0,0 +1,3 @@ +import { initMaps } from '@defra/forms-engine-plugin/shared.js' + +initMaps() diff --git a/src/config/index.ts b/src/config/index.ts index d47f83dda..0a98ff720 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -301,12 +301,19 @@ export const config = convict({ }, ordnanceSurveyApiKey: { - doc: 'The ordnance survey api key used by the postcode lookup plugin', + doc: 'The ordnance survey api key used by the postcode lookup and maps plugin', format: String, nullable: true, default: undefined, env: 'ORDNANCE_SURVEY_API_KEY' - } as SchemaObj + } as SchemaObj, + + useMapsFeature: { + doc: 'Feature flag to control maps', + format: Boolean, + default: false, + env: 'USE_MAPS_FEATURE' + } }) config.validate({ allowed: 'strict' }) diff --git a/src/server/plugins/blankie.ts b/src/server/plugins/blankie.ts index b589ba534..d50d5ee60 100644 --- a/src/server/plugins/blankie.ts +++ b/src/server/plugins/blankie.ts @@ -29,6 +29,7 @@ export const configureBlankiePlugin = (): ServerRegisterPluginObject< fontSrc: ['self', 'data:'], connectSrc: [ ['self'], + ['https://api.os.uk'], gaTrackingId ? googleAnalyticsOptions.connectSrc : [], uploaderUrl ? [uploaderUrl] : [] ].flat(), @@ -38,10 +39,11 @@ export const configureBlankiePlugin = (): ServerRegisterPluginObject< ].flat(), styleSrc: ['self', 'unsafe-inline'], imgSrc: [ - ['self'], + ['self', 'data:'], gaTrackingId ? googleAnalyticsOptions.imgSrc : [] ].flat(), frameSrc: ['self', 'data:'], + workerSrc: ['self', 'blob:'], generateNonces: true } } diff --git a/src/server/plugins/nunjucks/context.js b/src/server/plugins/nunjucks/context.js index 529fa01eb..116a08740 100644 --- a/src/server/plugins/nunjucks/context.js +++ b/src/server/plugins/nunjucks/context.js @@ -52,7 +52,8 @@ export function context(request) { phaseTag: config.get('phaseTag'), serviceBannerText: config.get('serviceBannerText'), serviceName: config.get('serviceName'), - serviceVersion: config.get('serviceVersion') + serviceVersion: config.get('serviceVersion'), + useMapsFeature: config.get('useMapsFeature') }, cspNonce: request?.plugins.blankie?.nonces?.script, currentPath: request ? `${request.path}${request.url.search}` : undefined, diff --git a/src/server/views/layout.html b/src/server/views/layout.html index 216b52979..0e4551850 100644 --- a/src/server/views/layout.html +++ b/src/server/views/layout.html @@ -32,6 +32,12 @@ + + + + + + {% endblock %} {% block pageTitle -%} @@ -158,6 +164,19 @@

Default page template

{% block bodyEnd %} + {% if config.useMapsFeature %} + + + + + + + + + + + {% endif %} + {% if config.googleAnalyticsTrackingId and cookieConsent.analytics === true %}