Skip to content

Commit d2ce96b

Browse files
committed
supporting middlewares
1 parent 7c42fa9 commit d2ce96b

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ COPY package.json .
77
COPY package-lock.json .
88
COPY index.js .
99
COPY server.js .
10+
COPY middlewares.js .
1011
COPY config ./config
1112
COPY dist ./dist
1213

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,19 @@ Allowed `logsFormat` values are described at: https://www.npmjs.com/package/morg
5353

5454
## Cache support
5555
Caching is provided by the module: https://www.npmjs.com/package/http-cache-middleware
56+
57+
## Custom middlewares
58+
You can also introduce other features such as authentication, security protections, etc... by using custom middlewares.
59+
You can just replace the `middlewares.js` file by your own configuration.
60+
61+
Default:
62+
```js
63+
// custom middlewares set
64+
// this file is intended to be overwritten by final images
65+
const helmet = require('helmet')
66+
67+
module.exports = [
68+
helmet
69+
]
70+
```
71+
> Please note that the `helmet` middleware enabled by default. See more details here: https://www.npmjs.com/package/helmet

middlewares.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// custom middlewares set
2+
// this file is intended to be overwritten by final images
3+
const helmet = require('helmet')
4+
5+
module.exports = [
6+
helmet
7+
]

server.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const files = require('serve-static')
33
const path = require('path')
44
const cache = require('http-cache-middleware')
55
const morgan = require('morgan')
6+
const middlewares = require('./middlewares')
67

78
module.exports = () => {
89
// configuration
@@ -19,7 +20,7 @@ module.exports = () => {
1920
'dist/'
2021
const port = PORT || config.get('port') ||
2122
3000
22-
const cacheEnabled = isCacheEnabled(CACHE_ENABLED, config)
23+
const cacheEnabled = isEnabled(CACHE_ENABLED, 'cacheEnabled', config)
2324
const cacheControlHeaderValue = CACHE_CONTROL_HEADER_VALUE || config.get('cacheControlHeaderValue') ||
2425
'public, no-cache, max-age=604800'
2526
const defaultFile = DEFALUT_FILE || config.get('defaultFile') ||
@@ -47,6 +48,13 @@ module.exports = () => {
4748

4849
return next()
4950
})
51+
52+
// supporting custom middlewares
53+
for (const middleware of middlewares) {
54+
server.use(middleware())
55+
}
56+
57+
// supporting cache
5058
if (cacheEnabled) {
5159
server.use(cache())
5260
}
@@ -58,11 +66,11 @@ module.exports = () => {
5866
}
5967
}
6068

61-
function isCacheEnabled (env, config) {
69+
function isEnabled (env, configKey, config) {
6270
if (env !== undefined) {
6371
if (env === 'true') return true
6472
else return false
6573
} else {
66-
return config.get('cacheEnabled') || true
74+
return config.get(configKey) || true
6775
}
6876
}

0 commit comments

Comments
 (0)