SEO_iamge_renamer_starting_.../packages/api/src/app.module.ts

56 lines
1.7 KiB
TypeScript
Raw Normal View History

import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { APP_GUARD } from '@nestjs/core';
import { DatabaseModule } from './database/database.module';
import { AuthModule } from './auth/auth.module';
import { UsersModule } from './users/users.module';
import { StorageModule } from './storage/storage.module';
import { UploadModule } from './upload/upload.module';
import { QueueModule } from './queue/queue.module';
import { WebSocketModule } from './websocket/websocket.module';
import { BatchesModule } from './batches/batches.module';
import { ImagesModule } from './images/images.module';
import { KeywordsModule } from './keywords/keywords.module';
import { JwtAuthGuard } from './auth/auth.guard';
import { RateLimitMiddleware } from './common/middleware/rate-limit.middleware';
import { SecurityMiddleware } from './common/middleware/security.middleware';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ['.env.local', '.env'],
cache: true,
}),
DatabaseModule,
AuthModule,
UsersModule,
StorageModule,
UploadModule,
QueueModule,
WebSocketModule,
BatchesModule,
ImagesModule,
KeywordsModule,
],
providers: [
{
provide: APP_GUARD,
useClass: JwtAuthGuard,
},
],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
// Apply security middleware to all routes
consumer
.apply(SecurityMiddleware)
.forRoutes('*');
// Apply rate limiting to authentication routes
consumer
.apply(RateLimitMiddleware)
.forRoutes('auth/*');
}
}