SPB Git
1.1 KB · 13 lines typescript
1/** Creates the owner account from OWNER_EMAIL / OWNER_INITIAL_PASSWORD (first run only). The password must be changed at first login. */2import "./_env";3import { eq } from "drizzle-orm";4import { db, schema, closeDb } from "../src/db";5import { hashPassword, passwordPolicy } from "../src/lib/auth/password";6const email = process.env.OWNER_EMAIL?.toLowerCase().trim(); const pw = process.env.OWNER_INITIAL_PASSWORD;7if (!email || !pw) { console.error("OWNER_EMAIL and OWNER_INITIAL_PASSWORD required"); process.exit(1); }8const policy = passwordPolicy(pw); if (policy) { console.error(`OWNER_INITIAL_PASSWORD rejected: ${policy}`); process.exit(1); }9const [existing] = await db.select({ id: schema.users.id }).from(schema.users).where(eq(schema.users.email, email));10if (existing) console.log(`owner ${email} already exists — nothing to do`);11else { await db.insert(schema.users).values({ email, displayName: "Owner", passwordHash: await hashPassword(pw), role: "owner", mustChangePassword: true }); console.log(`owner ${email} created (must change password at first login)`); }12await closeDb();13
Files · main
Menu

Theme