import { Module, forwardRef } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { AuthService } from './auth.service'; import { AuthController } from './auth.controller'; import { JwtStrategy } from './jwt.strategy'; import { JwtAuthGuard } from './jwt-auth.guard'; import { RolesGuard } from './roles.guard'; import { AuditModule } from '../audit/audit.module'; import { BotModule } from '../bot/bot.module'; @Module({ imports: [ AuditModule, forwardRef(() => BotModule), PassportModule, JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: config.get('JWT_SECRET') ?? '', signOptions: { expiresIn: (config.get('JWT_EXPIRES_IN') ?? '7d') as `${number}d` | `${number}h` | `${number}m` | `${number}s`, }, }), }), ], controllers: [AuthController], providers: [AuthService, JwtStrategy, JwtAuthGuard, RolesGuard], exports: [AuthService, JwtAuthGuard, RolesGuard, JwtModule], }) export class AuthModule {}