import { forwardRef, Module } from '@nestjs/common'; import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; import { UserModule } from 'src/user/user.module'; import { JwtModule } from '@nestjs/jwt'; import { TypeOrmModule } from '@nestjs/typeorm'; import { UserSession } from 'src/user/entities/user-session.entity'; import { PassportModule } from '@nestjs/passport'; import { JwtStrategy } from './strategies/jwt.strategy'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { VerificationModule } from 'src/verification/verification.module'; import { OptionalAuthGuard } from './strategies/OptionalAuthGuard'; @Module({ imports: [ ConfigModule, forwardRef(() => UserModule), TypeOrmModule.forFeature([UserSession]), PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ secret: configService.get('JWT_SECRET', 'tone-page'), signOptions: { expiresIn: configService.get('JWT_EXPIRES_IN', '1d'), }, }) }), VerificationModule, ], controllers: [AuthController], providers: [ AuthService, JwtStrategy, OptionalAuthGuard, ], exports: [ PassportModule, JwtStrategy, AuthService, OptionalAuthGuard, ] }) export class AuthModule { }