48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
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}`);
|
|
}
|