fix(#338): Validate DEFAULT_WORKSPACE_ID as UUID
- Add federation.config.ts with UUID v4 validation for DEFAULT_WORKSPACE_ID - Validate at module initialization (fail fast if misconfigured) - Replace hardcoded "default" fallback with proper validation - Add 18 tests covering valid UUIDs, invalid formats, and missing values - Clear error messages with expected UUID format Refs #338 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,9 +3,10 @@
|
||||
*
|
||||
* Provides instance identity and federation management with DoS protection via rate limiting.
|
||||
* Issue #272: Rate limiting added to prevent DoS attacks on federation endpoints
|
||||
* Issue #338: Validate DEFAULT_WORKSPACE_ID at startup
|
||||
*/
|
||||
|
||||
import { Module } from "@nestjs/common";
|
||||
import { Module, Logger, OnModuleInit } from "@nestjs/common";
|
||||
import { ConfigModule } from "@nestjs/config";
|
||||
import { HttpModule } from "@nestjs/axios";
|
||||
import { ThrottlerModule } from "@nestjs/throttler";
|
||||
@@ -20,6 +21,7 @@ import { OIDCService } from "./oidc.service";
|
||||
import { CommandService } from "./command.service";
|
||||
import { QueryService } from "./query.service";
|
||||
import { FederationAgentService } from "./federation-agent.service";
|
||||
import { validateFederationConfig } from "./federation.config";
|
||||
import { PrismaModule } from "../prisma/prisma.module";
|
||||
import { TasksModule } from "../tasks/tasks.module";
|
||||
import { EventsModule } from "../events/events.module";
|
||||
@@ -83,4 +85,22 @@ import { RedisProvider } from "../common/providers/redis.provider";
|
||||
FederationAgentService,
|
||||
],
|
||||
})
|
||||
export class FederationModule {}
|
||||
export class FederationModule implements OnModuleInit {
|
||||
private readonly logger = new Logger(FederationModule.name);
|
||||
|
||||
/**
|
||||
* Validate federation configuration at module initialization.
|
||||
* Issue #338: Fail fast if DEFAULT_WORKSPACE_ID is not a valid UUID.
|
||||
*/
|
||||
onModuleInit(): void {
|
||||
try {
|
||||
validateFederationConfig();
|
||||
this.logger.log("Federation configuration validated successfully");
|
||||
} catch (error) {
|
||||
this.logger.error(
|
||||
`Federation configuration validation failed: ${error instanceof Error ? error.message : String(error)}`
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user