@@ -4,7 +4,11 @@ const csp = require('helmet-csp')
44const refererPolicy = require ( 'referrer-policy' )
55const featurePolicy = require ( 'feature-policy' )
66
7- const logger = consola . withScope ( 'nuxt:csp' )
7+ const securityFileGenerator = require ( './securityFile/generator' )
8+ const securityFileFactory = require ( './securityFile/factory' )
9+ const securityFileMiddleware = require ( './securityFile/middleware' )
10+
11+ const logger = consola . withScope ( 'nuxt:security' )
812
913module . exports = function ( moduleOptions ) {
1014 const defaults = {
@@ -13,11 +17,13 @@ module.exports = function(moduleOptions) {
1317 csp : null ,
1418 referer : null ,
1519 features : null ,
20+ securityFile : null ,
1621 additionalHeaders : false
1722 }
23+
1824 const options = {
1925 ...defaults ,
20- ...this . options [ 'nuxt-csp' ] ,
26+ ...this . options . security ,
2127 ...moduleOptions
2228 }
2329
@@ -74,6 +80,21 @@ module.exports = function(moduleOptions) {
7480 if ( options . additionalHeaders ) {
7581 this . addServerMiddleware ( configureAddtionnalHeaders ( ) )
7682 }
83+
84+ if ( options . securityFile ) {
85+ options . securityFile . wellKnowDir = '.well-known'
86+ options . securityFile . fileName = 'security.txt'
87+
88+ const securityFileContents = securityFileFactory ( options . securityFile )
89+
90+ this . nuxt . hook ( 'generate:done' , ( ) => {
91+ securityFileGenerator ( options . securityFile , securityFileContents , this )
92+ } )
93+
94+ this . nuxt . hook ( 'render:setupMiddleware' , ( ) => {
95+ securityFileMiddleware ( options . securityFile , securityFileContents , this )
96+ } )
97+ }
7798}
7899
79100module . exports . meta = require ( '../package.json' )
0 commit comments