mvp-ticket/backend/src/app.module.ts

51 lines
1.9 KiB
TypeScript

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
// TODO use env.dev and end.prod
// TODO Implement helmet module
// TODO Implement CSRF protection -> csurf module
.apply(
CspMiddleware,
SecurityHeadersMiddleware,
HttpsRedirectMiddleware,
CorsMiddleware
)
.forRoutes({ path: '*', method: RequestMethod.ALL });
}
}