SPB Git

Repository Public

setup-token.ts 1.0 KB 21 lines typescript

1import "./_env";2import { sql } from "../src/lib/db";3import { env } from "../src/lib/env";4import { issueSetupToken } from "../src/lib/auth";56/**7 * Recovery from the server's shell: prints a one-time link that enrols a new passkey.8 *   tsx scripts/setup-token.ts            → add a passkey (existing ones kept)9 *   tsx scripts/setup-token.ts --recovery → replace every passkey and sign out every session10 */11async function main() {12  const recovery = process.argv.includes("--recovery");13  const [u] = await sql<{ id: string }[]>`SELECT id FROM users ORDER BY created_at LIMIT 1`;14  if (!u) throw new Error("No owner account: run scripts/bootstrap.ts first");15  const token = await issueSetupToken(u.id, recovery ? "recovery" : "setup", 30);16  console.log(`${env.appUrl}/admin/setup#${token}`);17  console.log(recovery ? "Valid 30 minutes, one use. Enrolling with it REMOVES the other passkeys and signs out every device." : "Valid 30 minutes, one use.");18  await sql.end();19}20main().catch((e) => { console.error(e.message); process.exit(1); });21
Files main
Menu

Theme