17 lines
583 B
TypeScript
17 lines
583 B
TypeScript
import { Injectable, NestMiddleware } from '@nestjs/common';
|
|
import { NextFunction, Request, Response } from 'express';
|
|
import { TokenService } from 'src/modules/utility/services/token.service';
|
|
|
|
@Injectable()
|
|
export class CSRFMiddleware implements NestMiddleware {
|
|
constructor(private readonly tokenService: TokenService) {}
|
|
|
|
use(req: Request, res: Response, next: NextFunction) {
|
|
// TODO: do not store in session, keep the amount of pointless sessions down
|
|
if (!req.session.csrf) {
|
|
req.session.csrf = this.tokenService.generateString(64);
|
|
}
|
|
next();
|
|
}
|
|
}
|