import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { CSRFMiddleware } from './middleware/csrf.middleware'; import { FlashMiddleware } from './middleware/flash.middleware'; import { LoginModule } from './modules/features/login/login.module'; import { OAuth2Module } from './modules/features/oauth2/oauth2.module'; import { RegisterModule } from './modules/features/register/register.module'; import { DatabaseModule } from './modules/objects/database/database.module'; import { OAuth2ClientModule } from './modules/objects/oauth2-client/oauth2-client.module'; import { OAuth2TokenModule } from './modules/objects/oauth2-token/oauth2-token.module'; import { UploadModule } from './modules/objects/upload/upload.module'; import { UserModule } from './modules/objects/user/user.module'; import { UtilityModule } from './modules/utility/utility.module'; @Module({ imports: [ UtilityModule, DatabaseModule, UserModule, UploadModule, OAuth2ClientModule, OAuth2TokenModule, LoginModule, RegisterModule, OAuth2Module, ], controllers: [AppController], providers: [AppService, CSRFMiddleware], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(CSRFMiddleware).forRoutes('*'); consumer .apply(FlashMiddleware) .forRoutes('login', 'register', 'login/verify'); } }