import { MiddlewareConsumer, Module, RequestMethod } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { ScheduleModule } from '@nestjs/schedule'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ClearExpiredSessionsCron } from './cron/clear-expired-sesstions.cron'; import { CorsMiddleware } from './middleware/cors-middleware/cors.middlware'; import { CspMiddleware } from './middleware/csp-middleware/csp.middleware'; import { HttpsRedirectMiddleware } from './middleware/https-middlware/https-redirect.middleware'; import { SecurityHeadersMiddleware } from './middleware/security-middleware/security.middleware'; import { AuthModule } from './modules/auth-module/auth.module'; import { DatabaseModule } from './modules/database-module/database.module'; import { SendgridModule } from './modules/sendgrid-module/sendgrid.module'; import { SessionModule } from './modules/session/session.module'; import { UserModule } from './modules/user-module/user.module'; import { VerifyModule } from './modules/verify-module/verify.module'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, }), ScheduleModule.forRoot(), DatabaseModule, AuthModule, UserModule, SendgridModule, VerifyModule, SessionModule, ], controllers: [AppController], providers: [AppService, ClearExpiredSessionsCron], }) export class AppModule { public configure(consumer: MiddlewareConsumer): void { consumer // TODO Redirect via Reverse Proxy all HTTP requests to HTTPS .apply( CspMiddleware, SecurityHeadersMiddleware, HttpsRedirectMiddleware, CorsMiddleware ) .forRoutes({ path: '*', method: RequestMethod.ALL }); } }