import { Inject, MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { RequestHandler } from 'express'; import { AuthMiddleware } from 'src/middleware/auth.middleware'; import { CSRFMiddleware } from 'src/middleware/csrf.middleware'; import { FlashMiddleware } from 'src/middleware/flash.middleware'; import { UserMiddleware } from 'src/middleware/user.middleware'; import { ValidateCSRFMiddleware } from 'src/middleware/validate-csrf.middleware'; import { AuditModule } from 'src/modules/objects/audit/audit.module'; import { UserTokenModule } from 'src/modules/objects/user-token/user-token.module'; import { UserModule } from 'src/modules/objects/user/user.module'; import { SessionModule } from '../session/session.module'; import { TwoFactorController } from './two-factor.controller'; @Module({ imports: [UserModule, UserTokenModule, AuditModule, SessionModule], controllers: [TwoFactorController], }) export class TwoFactorModule implements NestModule { constructor(@Inject('SESSION') private _session: RequestHandler) {} configure(consumer: MiddlewareConsumer) { consumer .apply( this._session, CSRFMiddleware, UserMiddleware, AuthMiddleware, FlashMiddleware, ValidateCSRFMiddleware, ) .forRoutes(TwoFactorController); } }