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 './strategies/jwt.strategy'; import { PrismaModule } from '../prisma/prisma.module'; @Module({ imports: [ PrismaModule, // ✅ Important: Import PrismaModule ConfigModule, PassportModule, JwtModule.registerAsync({ inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: getJwtSecret(config), signOptions: { expiresIn: config.get('JWT_EXPIRES_IN') || '7d', }, }), }), ], controllers: [AuthController], providers: [AuthService, JwtStrategy], exports: [AuthService], }) export class AuthModule { } function getJwtSecret(config: ConfigService): string { const secret = config.get('JWT_SECRET'); if (!secret || secret.length < 32) { throw new Error('JWT_SECRET must be set to at least 32 characters.'); } return secret; }