feat: initialize VitePress CMS
This commit is contained in:
47
server/bootstrap.mjs
Normal file
47
server/bootstrap.mjs
Normal file
@@ -0,0 +1,47 @@
|
||||
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}`);
|
||||
}
|
||||
Reference in New Issue
Block a user