File size: 1,033 Bytes
bc4a7e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import { requireManagementAuth } from "@/lib/api/requireManagementAuth";
import { createPendingCommandCodeAuthSession } from "@/lib/db/commandCodeAuth";
import {
buildCommandCodeCliCallbackUrl,
COMMAND_CODE_AUTH_TTL_MS,
COMMAND_CODE_STUDIO_AUTH_URL,
generateCommandCodeState,
noStoreJson,
stateHashFromState,
} from "../shared";
export async function POST(request: Request) {
const authError = await requireManagementAuth(request);
if (authError) return authError;
const state = generateCommandCodeState();
const expiresAt = new Date(Date.now() + COMMAND_CODE_AUTH_TTL_MS).toISOString();
const stateHash = stateHashFromState(state);
createPendingCommandCodeAuthSession({ stateHash, expiresAt });
const callbackUrl = buildCommandCodeCliCallbackUrl();
const authUrl = `${COMMAND_CODE_STUDIO_AUTH_URL}?callback=${encodeURIComponent(
callbackUrl
)}&state=${encodeURIComponent(state)}`;
return noStoreJson({ state, authUrl, callbackUrl, expiresAt, mode: "manual" });
}
|