feat(network): add ProxyCheck IP intelligence

This commit is contained in:
dmg
2026-08-01 14:32:54 -04:00
parent 10554eeaff
commit 40abab7abc
18 changed files with 539 additions and 26 deletions
+7 -2
View File
@@ -4,6 +4,7 @@ import { getClientIp } from "@minecraft-account-manager/network";
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
import { db } from "@/lib/database";
import { getIpIntelligence, toAuditIpData } from "@/lib/ip-intelligence";
export async function GET(request: NextRequest) {
const code = request.nextUrl.searchParams.get("code") ?? "";
@@ -13,6 +14,7 @@ export async function GET(request: NextRequest) {
repository: createAuthRepository(db),
});
const ipAddress = getClientIp(request.headers, process.env.TRUST_PROXY === "true");
const intelligence = ipAddress ? await getIpIntelligence(ipAddress) : null;
await Promise.all([
recordEvent(db, {
type: "games.minecraft.account-manager.auth.magic-link.consumed",
@@ -20,14 +22,17 @@ export async function GET(request: NextRequest) {
subject: `user/${result.user.id}`,
actorUserId: result.user.id,
ipAddress: ipAddress ?? undefined,
data: { isNewUser: result.isNewUser },
data: {
isNewUser: result.isNewUser,
ipIntelligence: intelligence ? toAuditIpData(intelligence) : null,
},
}),
ipAddress
? db.insert(ipObservations).values({
userId: result.user.id,
source: "web",
ipAddress,
classification: "unknown",
classification: intelligence?.classification ?? "unknown",
})
: Promise.resolve(),
]);