| 123456789101112131415161718192021222324252627282930 |
- const { doubleCsrf } = require('csrf-csrf')
- module.exports = (ignoredMethods, excludeUrls) => {
- const {
- doubleCsrfProtection,
- validateRequest
- } = doubleCsrf({
- getSecret: () => process.env.SRU51,
- cookieName: '_csrf',
- getTokenFromRequest: (req) => req.body._csrf || req.headers['x-csrf-token'] || req.query._csrf,
- ignoredMethods,
- cookieOptions: {
- sameSite: 'lax',
- path: '/',
- secure: true
- },
- size: 32
- })
- return [
- (req, res, next) => {
- if (excludeUrls?.filter(
- (x) => x === req.originalUrl || (x.test && x.test(req.originalUrl))
- ).length > 0) next()
- else doubleCsrfProtection(req, res, next)
- }, (req, res, next) => {
- if (validateRequest(req)) res.clearCookie('_csrf')
- next()
- }
- ]
- }
|