import { Module, forwardRef } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { PrismaMongoModule } from '../../prisma/prisma-mongo.module'; import { RabbitmqModule } from '../../rabbitmq/rabbitmq.module'; import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; import { CoreModule } from '@box/core/core.module'; import { JwtStrategy } from './strategies/jwt.strategy'; import { JwtAuthGuard } from './guards/jwt-auth.guard'; import { AdModule } from '../ads/ad.module'; @Module({ imports: [ PrismaMongoModule, RabbitmqModule, CoreModule, AdModule, PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ secret: configService.get('JWT_SECRET') || 'default-secret-key', signOptions: { expiresIn: configService.get('JWT_EXPIRES_IN') || '7d', }, }), }), ], controllers: [AuthController], providers: [AuthService, JwtStrategy, JwtAuthGuard], exports: [AuthService, JwtAuthGuard], }) export class AuthModule {}