42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
![]() |
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 { 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,
|
||
|
],
|
||
|
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/*');
|
||
|
}
|
||
|
}
|