hof 22.7.0-service-paused-beta.2 → 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.
- package/components/service-paused/index.js +44 -43
- package/frontend/template-partials/translations/src/en/errors.json +6 -1
- package/frontend/template-partials/views/service-paused.html +6 -14
- package/index.js +10 -4
- package/middleware/errors.js +16 -0
- package/middleware/index.js +2 -1
- package/middleware/service-paused.js +53 -0
- package/package.json +1 -1
- package/sandbox/.env +1 -1
- package/sandbox/apps/sandbox/translations/en/default.json +5 -0
- package/sandbox/apps/sandbox/translations/src/en/errors.json +5 -0
- package/sandbox/package.json +1 -1
- package/sandbox/server.js +1 -1
@@ -1,46 +1,47 @@
|
|
1
|
-
/**
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
}
|
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
|
-
{{
|
3
|
+
{{title}}
|
12
4
|
{{/header}}
|
13
|
-
|
14
5
|
{{$content}}
|
15
|
-
<
|
16
|
-
<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(
|
236
|
-
|
237
|
-
|
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(
|
package/middleware/errors.js
CHANGED
@@ -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
|
|
package/middleware/index.js
CHANGED
@@ -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
package/sandbox/.env
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
SERVICE_PAUSED=true
|
package/sandbox/package.json
CHANGED
@@ -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"
|