Files
vat-api.eu/server/utils/requestLogger.ts
Bennet Gallein b0e78086f4 feat: anonymize IPs via HMAC before persisting to MongoDB
GDPR compliance — IPs are HMAC-SHA256'd (truncated to 16 hex chars)
before being pushed to the Redis queue, so only pseudonymous tokens
are ever stored.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:30:20 +01:00

25 lines
626 B
TypeScript

import { createHmac } from "node:crypto";
export interface RequestLogEntry {
ip: string;
path: string;
method: string;
statusCode: number;
userAgent: string;
timestamp: string;
}
export function anonymizeIp(ip: string): string {
const secret = useRuntimeConfig().adminPassword || "default-hmac-key";
return createHmac("sha256", secret).update(ip).digest("hex").slice(0, 16);
}
export function logRequest(data: RequestLogEntry): void {
try {
const redis = getRedis();
redis.lpush("request-logs", JSON.stringify(data)).catch(() => {});
} catch {
// Never let logging break API responses
}
}