import { Global, Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { JwtModule } from '@nestjs/jwt'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AuthOtpEntity } from '../../entities/auth-otp.entity'; import { UserEntity } from '../../entities/user.entity'; import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; import { SmsService } from './sms.service'; import { JwtAuthGuard } from './guards/jwt-auth.guard'; import { RolesGuard } from './guards/roles.guard'; @Global() @Module({ imports: [ TypeOrmModule.forFeature([AuthOtpEntity, UserEntity]), JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: config.get('JWT_SECRET') ?? 'montime-dev-secret-change-me', signOptions: { expiresIn: config.get('JWT_EXPIRES_IN') ?? '30d', }, }), }), ], controllers: [AuthController], providers: [AuthService, SmsService, JwtAuthGuard, RolesGuard], exports: [JwtAuthGuard, RolesGuard, JwtModule], }) export class AuthModule {}