31 lines
1005 B
TypeScript
31 lines
1005 B
TypeScript
import {
|
|
authenticateRelayNode,
|
|
consumePhoneHandoffForRelay,
|
|
} from "@/db/relay-control-plane";
|
|
import { apiError, readJsonMutation } from "../../../respond";
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
const principal = await authenticateRelayNode(request);
|
|
const payload = await readJsonMutation<{
|
|
ticket?: string;
|
|
pwa_origin?: string;
|
|
name?: string;
|
|
phone_ed25519_public?: string;
|
|
phone_x25519_public?: string;
|
|
identity_fingerprint?: string;
|
|
}>(request);
|
|
return Response.json(await consumePhoneHandoffForRelay({
|
|
principal,
|
|
ticket: payload.ticket ?? "",
|
|
pwaOrigin: payload.pwa_origin ?? "",
|
|
name: payload.name ?? "",
|
|
phoneEd25519Public: payload.phone_ed25519_public ?? "",
|
|
phoneX25519Public: payload.phone_x25519_public ?? "",
|
|
identityFingerprint: payload.identity_fingerprint ?? "",
|
|
}), { headers: { "cache-control": "no-store" } });
|
|
} catch (error) {
|
|
return apiError(error);
|
|
}
|
|
}
|