All files / src/platform/identity identity.module.ts

0% Statements 0/31
100% Branches 0/0
100% Functions 0/0
0% Lines 0/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126                                                                                                                                                                                                                                                           
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
 
// Schemas
import {
  SocialIdentity,
  SocialIdentitySchema,
} from './schemas/identity.schema';
import { LoginAttempt, LoginAttemptSchema } from './schemas/identity.schema';
import {
  AccountRecoveryRequest,
  AccountRecoveryRequestSchema,
} from './schemas/identity.schema';
import {
  IdentityLinkHistory,
  IdentityLinkHistorySchema,
} from './schemas/identity.schema';
 
import { MfaMethod, MfaMethodSchema } from './schemas/mfa.schema';
import { MfaChallenge, MfaChallengeSchema } from './schemas/mfa.schema';
import { MfaRecoveryCode, MfaRecoveryCodeSchema } from './schemas/mfa.schema';
import {
  MfaEnforcementPolicy,
  MfaEnforcementPolicySchema,
} from './schemas/mfa.schema';
import { MfaAuditLog, MfaAuditLogSchema } from './schemas/mfa.schema';
 
import {
  TrustedDevice,
  TrustedDeviceSchema,
} from './schemas/device-trust.schema';
import {
  DeviceRegistration,
  DeviceRegistrationSchema,
} from './schemas/device-trust.schema';
import {
  DeviceRiskEvent,
  DeviceRiskEventSchema,
} from './schemas/device-trust.schema';
 
import { UserSession, UserSessionSchema } from './schemas/session.schema';
import {
  SessionTokenFamily,
  SessionTokenFamilySchema,
} from './schemas/session.schema';
import {
  SessionActivity,
  SessionActivitySchema,
} from './schemas/session.schema';
 
// Existing schemas (referenced, not created here)
import { User, UserSchema } from '../user/schemas/user.schema';
import {
  RefreshToken,
  RefreshTokenSchema,
} from '../auth/schemas/refresh-token.schema';
 
// Services
import { IdentityService } from './identity.service';
import { GoogleAuthProvider } from './social-auth/google-auth.provider';
import { AppleAuthProvider } from './social-auth/apple-auth.provider';
import { MfaService } from './mfa/mfa.service';
import { DeviceTrustService } from './device-trust/device-trust.service';
import { SessionService } from './sessions/session.service';
 
// Platform dependencies
import { EventBusService } from '../events/event-bus.service';
import { AuditLogService } from '../audit/audit-log.service';
import { CacheService } from '../cache/cache.service';
 
@Module({
  imports: [
    MongooseModule.forFeature([
      // Identity schemas
      { name: SocialIdentity.name, schema: SocialIdentitySchema },
      { name: LoginAttempt.name, schema: LoginAttemptSchema },
      {
        name: AccountRecoveryRequest.name,
        schema: AccountRecoveryRequestSchema,
      },
      { name: IdentityLinkHistory.name, schema: IdentityLinkHistorySchema },
 
      // MFA schemas
      { name: MfaMethod.name, schema: MfaMethodSchema },
      { name: MfaChallenge.name, schema: MfaChallengeSchema },
      { name: MfaRecoveryCode.name, schema: MfaRecoveryCodeSchema },
      { name: MfaEnforcementPolicy.name, schema: MfaEnforcementPolicySchema },
      { name: MfaAuditLog.name, schema: MfaAuditLogSchema },
 
      // Device trust schemas
      { name: TrustedDevice.name, schema: TrustedDeviceSchema },
      { name: DeviceRegistration.name, schema: DeviceRegistrationSchema },
      { name: DeviceRiskEvent.name, schema: DeviceRiskEventSchema },
 
      // Session schemas
      { name: UserSession.name, schema: UserSessionSchema },
      { name: SessionTokenFamily.name, schema: SessionTokenFamilySchema },
      { name: SessionActivity.name, schema: SessionActivitySchema },
 
      // Referenced schemas
      { name: User.name, schema: UserSchema },
      { name: RefreshToken.name, schema: RefreshTokenSchema },
    ]),
  ],
  providers: [
    IdentityService,
    GoogleAuthProvider,
    AppleAuthProvider,
    MfaService,
    DeviceTrustService,
    SessionService,
    EventBusService,
    AuditLogService,
    CacheService,
  ],
  exports: [
    IdentityService,
    MfaService,
    DeviceTrustService,
    SessionService,
    GoogleAuthProvider,
    AppleAuthProvider,
  ],
})
export class IdentityModule {}