import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { ThrottlerModule } from '@nestjs/throttler'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { CSRFMiddleware } from './middleware/csrf.middleware'; import { UserMiddleware } from './middleware/user.middleware'; import { ConfigurationModule } from './modules/config/config.module'; 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 { TwoFactorModule } from './modules/features/two-factor/two-factor.module'; import { DatabaseModule } from './modules/objects/database/database.module'; import { EmailModule } from './modules/objects/email/email.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: [ ThrottlerModule.forRoot({ ttl: 10, limit: 10, }), ConfigurationModule, UtilityModule, DatabaseModule, EmailModule, UserModule, UploadModule, OAuth2ClientModule, OAuth2TokenModule, LoginModule, RegisterModule, OAuth2Module, TwoFactorModule, ], controllers: [AppController], providers: [AppService, CSRFMiddleware], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(CSRFMiddleware).forRoutes('*'); consumer.apply(UserMiddleware).forRoutes('*'); } }