import { db, getSetting, migrate, setSetting } from "./db.mjs"; import { hashPassword } from "./security.mjs"; const defaultAdminEmail = process.env.CMS_ADMIN_EMAIL || "admin@example.com"; const defaultAdminPassword = process.env.CMS_ADMIN_PASSWORD || "admin123456"; function seedAdmin() { const admin = db.prepare("SELECT id FROM users WHERE role = 'system_admin' LIMIT 1").get(); if (admin) return; db.prepare(` INSERT INTO users (email, password_hash, name, role, email_verified) VALUES (?, ?, ?, 'system_admin', 1) `).run(defaultAdminEmail, hashPassword(defaultAdminPassword), "Administrator"); } function seedSettings() { const seeds = { "site.title": "VitePress-CMS", "auth.allow_email_login": "true", "auth.allow_github_login": "true", "auth.allow_registration": "false", "smtp.host": "", "smtp.port": "587", "smtp.username": "", "smtp.password": "", "smtp.sender_email": "", "github.api_base_url": "https://api.github.com", "github.web_base_url": "https://github.com", "github.oauth_client_id": "", "github.oauth_client_secret": "", }; Object.entries(seeds).forEach(([key, value]) => { if (getSetting(key, undefined) === undefined) { setSetting(key, value, key.includes("secret") || key.includes("password")); } }); } export function bootstrap() { migrate(); seedAdmin(); seedSettings(); console.log(`Initial admin: ${defaultAdminEmail}`); }