import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { UserModule } from '../users/user.module'; import { AuthService } from './auth.service'; import { AuthController } from './auth.controller'; import { JwtStrategy } from './jwt.strategy'; import { LocalStrategy } from './local.strategy'; @Module({ imports: [ UserModule, PassportModule, JwtModule.registerAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => { const expiration = configService.get('JWT_EXPIRATION') || '7d'; return { secret: configService.get('JWT_SECRET') || 'default-secret-key', signOptions: { expiresIn: expiration ? parseInt(expiration) : 3600, // Convert to number }, }; }, inject: [ConfigService], }), ], controllers: [AuthController], providers: [AuthService, LocalStrategy, JwtStrategy], exports: [AuthService, JwtModule], }) export class AuthModule {}