hof 22.7.0-service-paused-beta.3 → 22.7.0-service-paused-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,47 +1,47 @@
1
- /**
2
- *
3
- * @fileOverview
4
- * Provides custom behavior for rendering a service down template when a service needs to be temporarily paused. This includes
5
- * - Redirecting the user to a 'service down' page
6
- * - Setting custom content and titles on the service down page.
7
- *
8
- * @module servicePausedBehaviour
9
- * @requires ../../config/hof-defaults
10
- * @param {Class} superclass - The class to be extended.
11
- * @returns {Class} - The extended class with service down handling functionality.
12
- */
1
+ // /**
2
+ // *
3
+ // * @fileOverview
4
+ // * Provides custom behavior for rendering a service down template when a service needs to be temporarily paused. This includes
5
+ // * - Redirecting the user to a 'service down' page
6
+ // * - Setting custom content and titles on the service down page.
7
+ // *
8
+ // * @module servicePausedBehaviour
9
+ // * @requires ../../config/hof-defaults
10
+ // * @param {Class} superclass - The class to be extended.
11
+ // * @returns {Class} - The extended class with service down handling functionality.
12
+ // */
13
13
 
14
- 'use strict';
14
+ // 'use strict';
15
15
 
16
- const config = require('../../config/hof-defaults');
17
- const logger = require('../../lib/logger')(config);
16
+ // const config = require('../../config/hof-defaults');
17
+ // const logger = require('../../lib/logger')(config);
18
18
 
19
- module.exports = superclass => class extends superclass {
20
- getValues(req, res, callback) {
21
- return super.getValues(req, res, (err, values) => {
22
- if (err) {
23
- logger.error(`Error getting values: ${err}`);
24
- return callback(err, values);
25
- }
26
- if (config.servicePaused === true || config.servicePaused === 'true') {
27
- logger.info(`Service is paused. Redirecting...`);
28
- return res.redirect('/service-paused');
29
- }
30
- return callback(null, values);
31
- });
32
- }
33
- locals(req, res) {
34
- // set default service unavailable message
35
- const superLocals = super.locals(req, res);
36
- if (config.servicePaused === true || config.servicePaused === 'true') {
37
- superLocals.header = req.translate('pages.service-paused.header');
38
- superLocals.title = req.translate('pages.service-paused.title');
39
- superLocals.message = req.translate('pages.service-paused.message');
40
- superLocals['answers-saved'] = req.translate('pages.service-paused.answers-saved');
41
- superLocals.contact = req.translate('pages.service-paused.contact');
42
- superLocals.alternative = req.translate('pages.service-paused.alternative');
43
- return superLocals;
44
- }
45
- return superLocals;
46
- }
47
- };
19
+ // module.exports = superclass => class extends superclass {
20
+ // getValues(req, res, callback) {
21
+ // return super.getValues(req, res, (err, values) => {
22
+ // if (err) {
23
+ // logger.error(`Error getting values: ${err}`);
24
+ // return callback(err, values);
25
+ // }
26
+ // if (config.servicePaused === true || config.servicePaused === 'true') {
27
+ // logger.info(`Service is paused. Redirecting...`);
28
+ // return res.redirect('/service-paused');
29
+ // }
30
+ // return callback(null, values);
31
+ // });
32
+ // }
33
+ // locals(req, res) {
34
+ // // set default service unavailable message
35
+ // const superLocals = super.locals(req, res);
36
+ // if (config.servicePaused === true || config.servicePaused === 'true') {
37
+ // superLocals.header = req.translate('pages.service-paused.header');
38
+ // superLocals.title = req.translate('pages.service-paused.title');
39
+ // superLocals.message = req.translate('pages.service-paused.message');
40
+ // superLocals['answers-saved'] = req.translate('pages.service-paused.answers-saved');
41
+ // superLocals.contact = req.translate('pages.service-paused.contact');
42
+ // superLocals.alternative = req.translate('pages.service-paused.alternative');
43
+ // return superLocals;
44
+ // }
45
+ // return superLocals;
46
+ // }
47
+ // };
@@ -26,5 +26,10 @@
26
26
  "message": "You have submitted too many applications in a short space of time.",
27
27
  "pre-time-to-wait": "Please try again in ",
28
28
  "post-time-to-wait": " minutes."
29
- }
29
+ },
30
+ "service-paused": {
31
+ "title": "Sorry, the service is unavailable",
32
+ "message": "This service is temporarily unavailable",
33
+ "answers-saved": "Your answers have not been saved"
34
+ }
30
35
  }
@@ -1,24 +1,16 @@
1
1
  {{<layout}}
2
- {{$journeyHeader}}
3
- {{#t}}journey.header{{/t}}
4
- {{/journeyHeader}}
5
-
6
- {{$propositionHeader}}
7
- {{> partials-navigation}}
8
- {{/propositionHeader}}
9
-
10
2
  {{$header}}
11
- {{header}}
3
+ {{title}}
12
4
  {{/header}}
13
-
14
5
  {{$content}}
15
- <p>{{message}}</p>
16
- <p>{{answers-saved}}</p>
6
+ <h1 class="govuk-heading-l">{{{title}}}</h1>
7
+ <p class="govuk-body">{{message}}</p>
8
+ <p class="govuk-body">{{answers-saved}}</p>
17
9
  {{#contact}}
18
- <p>{{contact}}</p>
10
+ <p class="govuk-body">{{contact}}</p>
19
11
  {{/contact}}
20
12
  {{#alternative}}
21
- <p>{{alternative}}</p>
13
+ <p class="govuk-body">{{alternative}}</p>
22
14
  {{/alternative}}
23
15
  {{/content}}
24
16
  {{/layout}}
package/index.js CHANGED
@@ -155,6 +155,7 @@ function bootstrap(options) {
155
155
  res.locals.sessionTimeoutWarningContent = config.sessionTimeoutWarningContent;
156
156
  res.locals.exitFormContent = config.exitFormContent;
157
157
  res.locals.saveExitFormContent = config.saveExitFormContent;
158
+ res.locals.servicePaused = config.servicePaused;
158
159
  next();
159
160
  });
160
161
 
@@ -231,12 +232,17 @@ function bootstrap(options) {
231
232
  // Set up routing so <YOUR-SITE-URL>/assets are served from /node_modules/govuk-frontend/govuk/assets
232
233
  app.use('/assets', express.static(path.join(__dirname, '/node_modules/govuk-frontend/govuk/assets')));
233
234
 
235
+ // Check if service has been paused and redirect accordingly
234
236
  if (config.servicePaused === true || config.servicePaused === 'true') {
235
- app.use('/service-paused', (req, res) => {
236
- const locals = Object.assign({}, req.translate('pages.service-paused'));
237
- res.render('service-paused', locals);
237
+ app.use((req, res, next) => {
238
+ if (req.path !== '/service-paused') {
239
+ return res.redirect('/service-paused');
240
+ }
241
+ next();
238
242
  });
239
- }
243
+ app.use('/service-paused', hofMiddleware.servicePaused());
244
+ };
245
+
240
246
 
241
247
  if (config.getAccessibility === true) {
242
248
  deprecate(
@@ -2,6 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  const rateLimitsConfig = require('../config/rate-limits');
5
+ const hofDefaultsConfig = require('../config/hof-defaults');
5
6
 
6
7
  const errorTitle = code => `${code}_ERROR`;
7
8
  const errorMsg = code => `There is a ${code}_ERROR`;
@@ -55,6 +56,21 @@ const getContent = (err, translate) => {
55
56
  content.postTimeToWait = (translate && translate('errors.submission-rate-limit.post-time-to-wait'));
56
57
  }
57
58
 
59
+ // if (hofDefaultsConfig.servicePaused === true || hofDefaultsConfig.servicePaused === 'true') {
60
+ // console.log('hello')
61
+ // // if(err.code === 'SERVICE_PAUSED'){
62
+ // err.status = 503;
63
+ // err.template = 'service-paused';
64
+ // err.title = (translate && translate('errors.service-paused.title'));
65
+ // err.message = (translate && translate('errors.service-paused.message'));
66
+ // err['answers-saved'] = (translate && translate('errors.service-paused.answers-saved'));
67
+ // err.contact = (translate && translate('errors.service-paused.contact'));
68
+ // content.title = (translate && translate('errors.service-paused.title'));
69
+ // content.message = (translate && translate('errors.service-paused.message'));
70
+ // content['answers-saved'] = (translate && translate('errors.service-paused.answers-saved'));
71
+ // content.contact = (translate && translate('errors.service-paused.contact'));
72
+ // }
73
+
58
74
  err.code = err.code || 'UNKNOWN';
59
75
  err.status = err.status || 500;
60
76
 
@@ -5,5 +5,6 @@ module.exports = {
5
5
  errors: require('./errors'),
6
6
  notFound: require('./not-found'),
7
7
  deepTranslate: require('./deep-translate'),
8
- rateLimiter: require('./rate-limiter')
8
+ rateLimiter: require('./rate-limiter'),
9
+ servicePaused: require('./service-paused')
9
10
  };
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ const config = require('../config/hof-defaults');
4
+ const getTranslations = translate => {
5
+ const translations = {
6
+ title: 'Sorry, this service is unavailable',
7
+ message: 'This service is temporarily unavailable',
8
+ 'answers-saved': 'Your answers have not been saved'
9
+ };
10
+
11
+ if (translate) {
12
+ const contact = translate('errors.service-paused.contact');
13
+ const alternative = translate('errors.service-paused.alternative');
14
+
15
+ translations.title = translate('errors.service-paused.title');
16
+ translations.message = translate('errors.service-paused.message');
17
+ translations['answers-saved'] = translate('errors.service-paused.answers-saved');
18
+
19
+ // Only render contact and alternative information if the key has a value set
20
+ if (contact === 'errors.service-paused.contact') {
21
+ translations.contact = ''
22
+ } else {
23
+ translations.contact = translate('errors.service-paused.contact');
24
+ }
25
+ if (alternative === 'errors.service-paused.alternative') {
26
+ translations.alternative = ''
27
+ } else {
28
+ translations.alternative = translate('errors.service-paused.alternative');
29
+ }
30
+ }
31
+ return translations;
32
+ };
33
+
34
+ module.exports = options => {
35
+ const opts = options || {};
36
+ const logger = opts.logger;
37
+
38
+ return (req, res) => {
39
+ const translate = opts.translate || req.translate;
40
+ const translations = getTranslations(translate);
41
+ if (logger && logger.warn) {
42
+ logger.warn(`Cannot find: ${req.url}`);
43
+ }
44
+ res.status(503).render('service-paused', {
45
+ title: translations.title,
46
+ message: translations.message,
47
+ 'answers-saved': translations['answers-saved'],
48
+ contact: translations.contact,
49
+ alternative: translations.alternative
50
+ });
51
+ };
52
+ };
53
+
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hof",
3
3
  "description": "A bootstrap for HOF projects",
4
- "version": "22.7.0-service-paused-beta.3",
4
+ "version": "22.7.0-service-paused-beta.4",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
7
7
  "author": "HomeOffice",
package/sandbox/.env CHANGED
@@ -1 +1 @@
1
- SERVICE_DOWN=true
1
+ SERVICE_PAUSED=true
@@ -1,4 +1,9 @@
1
1
  {
2
+ "errors": {
3
+ "service-paused": {
4
+ "contact": "You can email for more information"
5
+ }
6
+ },
2
7
  "exit": {
3
8
  "header": "You have left this form",
4
9
  "title": "You have left this form"
@@ -0,0 +1,5 @@
1
+ {
2
+ "service-paused": {
3
+ "contact": "You can email for more information"
4
+ }
5
+ }
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "scripts": {
10
10
  "start": "node server.js",
11
- "start:dev": "HOF_SANDBOX=true ../bin/hof-build watch",
11
+ "start:dev": "HOF_SANDBOX=true ../bin/hof-build watch --env",
12
12
  "dev": "yarn && GA_TAG=test nodemon server",
13
13
  "build": "HOF_SANDBOX=true ../bin/hof-build",
14
14
  "postinstall": "yarn run build"
package/sandbox/server.js CHANGED
@@ -10,7 +10,7 @@ bootstrap({
10
10
  ],
11
11
  behaviours: [
12
12
  require('../').components.sessionTimeoutWarning,
13
- require('../').components.servicePaused,
13
+ // require('../').components.servicePaused,
14
14
  ],
15
15
  rateLimits: {
16
16
  requests: {