import { Inject, MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { RequestHandler } from 'express'; 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 { LoginController } from './login.controller'; @Module({ imports: [UserModule, UserTokenModule, AuditModule, SessionModule], controllers: [LoginController], }) export class LoginModule implements NestModule { constructor(@Inject('SESSION') private _session: RequestHandler) {} configure(consumer: MiddlewareConsumer) { consumer .apply( this._session, CSRFMiddleware, FlashMiddleware, UserMiddleware, ValidateCSRFMiddleware, ) .forRoutes(LoginController); } }