import { Module } from "@nestjs/common"; import { JwtModule } from "@nestjs/jwt"; import { PassportModule } from "@nestjs/passport"; import { ConfigService } from "@nestjs/config"; import { APP_GUARD } from "@nestjs/core"; import { AuthService } from "./auth.service"; import { AuthZodController } from "./auth-zod.controller"; import { AuthAdminController } from "./auth-admin.controller"; import { UsersModule } from "@bff/modules/users/users.module"; import { MappingsModule } from "@bff/modules/id-mappings/mappings.module"; import { IntegrationsModule } from "@bff/integrations/integrations.module"; import { JwtStrategy } from "./strategies/jwt.strategy"; import { LocalStrategy } from "./strategies/local.strategy"; import { GlobalAuthGuard } from "./guards/global-auth.guard"; import { TokenBlacklistService } from "./services/token-blacklist.service"; import { EmailModule } from "@bff/infra/email/email.module"; import { ValidationModule } from "@bff/core/validation"; @Module({ imports: [ PassportModule, JwtModule.registerAsync({ useFactory: (configService: ConfigService) => ({ secret: configService.get("JWT_SECRET"), signOptions: { expiresIn: configService.get("JWT_EXPIRES_IN", "7d") }, }), inject: [ConfigService], }), UsersModule, MappingsModule, IntegrationsModule, EmailModule, ValidationModule, ], controllers: [AuthZodController, AuthAdminController], providers: [ AuthService, JwtStrategy, LocalStrategy, TokenBlacklistService, { provide: APP_GUARD, useClass: GlobalAuthGuard, }, ], exports: [AuthService, TokenBlacklistService], }) export class AuthModule {}