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 { AdminController } from './admin.controller'; import { MfaController } from './mfa.controller'; import { SsoController } from './sso.controller'; import { PasskeyController } from './passkey.controller'; import { AuthService } from './auth.service'; import { AdminAnalyticsService } from './admin-analytics.service'; import { RefreshTokenService } from './refresh-token.service'; import { MfaService } from './mfa.service'; import { SsoService } from './sso.service'; import { PasskeyService } from './passkey.service'; import { JwtStrategy } from './strategies/jwt.strategy'; import { LocalStrategy } from './strategies/local.strategy'; import { UsersModule } from '../users/users.module'; import { OrganizationsModule } from '../organizations/organizations.module'; import { IdeasModule } from '../ideas/ideas.module'; @Module({ imports: [ UsersModule, OrganizationsModule, IdeasModule, PassportModule, JwtModule.registerAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ secret: configService.get('JWT_SECRET'), signOptions: { expiresIn: '1h' }, }), }), ], controllers: [ AuthController, AdminController, MfaController, SsoController, PasskeyController, ], providers: [ AuthService, AdminAnalyticsService, RefreshTokenService, MfaService, SsoService, PasskeyService, JwtStrategy, LocalStrategy, ], exports: [AuthService, RefreshTokenService, JwtModule], }) export class AuthModule {}