/** * Device Fingerprint Module * * Main module for device fingerprinting and trust management functionality. * Integrates all services, controllers, and entities for browser-based * device identification and two-factor authentication workflows. * * @author David Valera Melendez * @since February 2025 */ import { Module, forwardRef } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { JwtModule } from '@nestjs/jwt'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { DeviceFingerprintController } from './device-fingerprint.controller'; import { FingerprintService } from './services/fingerprint.service'; import { DeviceService } from './services/device.service'; import { TwoFactorService } from './services/two-factor.service'; import { TrustedDevice } from './entities/trusted-device.entity'; import { TwoFactorVerification } from './entities/two-factor-verification.entity'; import { AuthModule } from '../auth/auth.module'; import { UserModule } from '../user/user.module'; /** * Device Fingerprint Module * * This module provides comprehensive device fingerprinting capabilities * including: * - Browser fingerprint generation and validation * - Device trust verification and risk assessment * - Two-factor authentication for new device registration * - Trusted device management and lifecycle * - Security monitoring and stale device cleanup * * The module integrates with the authentication system to provide * risk-based authentication and device-level security controls. */ @Module({ imports: [ /** * Configuration module for environment variables */ ConfigModule, /** * TypeORM entities for device fingerprinting * * Registers the database entities needed for storing trusted devices * and managing two-factor verification workflows. */ TypeOrmModule.forFeature([ TrustedDevice, TwoFactorVerification, ]), /** * JWT Module for token operations */ JwtModule.registerAsync({ imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ secret: configService.get('JWT_SECRET'), signOptions: { expiresIn: '10m' }, }), inject: [ConfigService], }), /** * Auth Module for authentication services */ forwardRef(() => AuthModule), /** * User Module for user data operations */ UserModule, ], /** * Module controllers * * REST API controllers that expose device fingerprinting functionality * to client applications and authentication workflows. */ controllers: [ DeviceFingerprintController, ], /** * Module services and providers * * Core business logic services for device fingerprinting, trust management, * and two-factor authentication workflows. */ providers: [ FingerprintService, DeviceService, TwoFactorService, ], /** * Exported services * * Services exported for use in other modules, particularly the * authentication module for integrating device trust verification * into login workflows. */ exports: [ FingerprintService, DeviceService, TwoFactorService, ], }) export class DeviceFingerprintModule { /** * Module configuration and initialization * * The module is designed to be imported into the main application module * and integrates seamlessly with existing authentication and user management * systems. * * Key integration points: * - DeviceService.verifyDeviceTrust() for login risk assessment * - TwoFactorService for new device registration workflows * - FingerprintService for generating reliable device identifiers * * Database requirements: * - trusted_devices table for storing device fingerprints and metadata * - two_factor_verifications table for managing 2FA workflows * * Dependencies: * - User entity with relationship to trusted devices * - JWT authentication for protected endpoints * - Email/SMS services for 2FA code delivery (configurable) */ }