INNER CODE UNIT · TypeScript
ensureDefaultAdmin
im4codes/imcodes · server/src/index.ts:687
async function ensureDefaultAdmin(db: Database, envConfig: EnvConfig): Promise<void> {
const row = await db.queryOne<{ cnt: number }>('SELECT COUNT(*) AS cnt FROM users');
if (row && Number(row.cnt) > 0) return;
const userId = randomHex(16);
const password = envConfig.DEFAULT_ADMIN_PASSWORD ?? 'imcodes';
const passwordHash = await hashPassword(password);
const now = Date.now();
await db.execute(
'INSERT INTO users (id, username, password_hash, display_name, password_must_change, is_admin, status, created_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)',
[userId, 'admin', passwordHash, 'Admin', true, true, 'active', now],
);
logger.info({ username: 'admin' }, 'Default admin account created (password_must_change=true)');
}
// ── Startup ───────────────────────────────────────────────────────────────────