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 ───────────────────────────────────────────────────────────────────

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…