import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { UserEntity } from '../../database/entities/user.entity'; import { RefreshTokenEntity } from '../../database/entities/refresh-token.entity'; import { AuthService } from './auth.service'; import { AuthController } from './auth.controller'; import { JwtStrategy } from './strategies/jwt.strategy'; import { AdminGuard } from '../../common/guards/admin.guard'; @Module({ imports: [ TypeOrmModule.forFeature([UserEntity, RefreshTokenEntity]), PassportModule, JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: config.get('JWT_ACCESS_SECRET'), signOptions: { expiresIn: config.get('JWT_ACCESS_TTL', '15m') }, }), }), ], providers: [AuthService, JwtStrategy, AdminGuard], controllers: [AuthController], exports: [AuthService, JwtModule, AdminGuard], }) export class AuthModule {}