import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; import { JwtStrategy } from './jwt.strategy'; import { JwtGuard } from './jwt.guard'; import { RoleGuard } from './role.guard'; import { PrismaModule } from '../prisma/prisma.module'; import { ThrottlerModule } from '@nestjs/throttler'; @Module({ imports: [ PrismaModule, PassportModule, ConfigModule, ThrottlerModule, JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: (() => { const s = config.get('JWT_SECRET'); if (!s) throw new Error('JWT_SECRET is not configured'); return s; })(), }), }), ], controllers: [AuthController], providers: [AuthService, JwtStrategy, JwtGuard, RoleGuard], exports: [JwtGuard, RoleGuard, AuthService, JwtModule], }) export class AuthModule {}