import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { SmsModule } from '../sms/sms.module'; import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; import { JwtStrategy } from './strategies/jwt.strategy'; @Module({ imports: [ SmsModule, PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: config.getOrThrow('JWT_ACCESS_SECRET'), signOptions: { expiresIn: config.get('JWT_ACCESS_EXPIRES_IN', '15m') as | `${number}s` | `${number}m` | `${number}h` | `${number}d`, }, }), }), ], controllers: [AuthController], providers: [AuthService, JwtStrategy], exports: [AuthService, JwtModule], }) export class AuthModule {}