import { Module, forwardRef } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { UsersModule } from '../users/users.module'; import { JwtStrategy } from './jwt.strategy'; import { JwtAuthGuard } from './jwt-auth.guard'; import { RolesGuard } from './roles.guard'; const getJwtSecret = () => { if (process.env.JWT_SECRET) return process.env.JWT_SECRET; if (process.env.NODE_ENV === 'production') { throw new Error('JWT_SECRET must be configured in production'); } return 'philomind-dev-only-secret-change-me'; }; @Module({ imports: [ PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.register({ secret: getJwtSecret(), signOptions: { expiresIn: '7d' }, }), forwardRef(() => UsersModule), ], providers: [JwtStrategy, JwtAuthGuard, RolesGuard], exports: [PassportModule, JwtModule, JwtAuthGuard, RolesGuard], }) export class AuthModule {}