fix(database): prevent duplicate admin creation during database initialization
All checks were successful
Build & Push Docker Image / build (push) Successful in 6m17s

This commit is contained in:
2026-03-01 13:09:22 +01:00
parent df4666bb63
commit 25b13b4078

View File

@@ -444,13 +444,17 @@ export async function initDatabase() {
const adminEmail = process.env.ADMIN_EMAIL || 'admin@example.com'; const adminEmail = process.env.ADMIN_EMAIL || 'admin@example.com';
const adminPassword = process.env.ADMIN_PASSWORD || 'admin123'; const adminPassword = process.env.ADMIN_PASSWORD || 'admin123';
const hash = bcrypt.hashSync(adminPassword, 12); // Check if admin already exists (upgrade from older version without the flag)
await db.run( const existing = await db.get('SELECT id FROM users WHERE email = ?', [adminEmail]);
'INSERT INTO users (name, display_name, email, password_hash, role, email_verified) VALUES (?, ?, ?, ?, ?, 1)', if (!existing) {
['Administrator', 'Administrator', adminEmail, hash, 'admin'] const hash = bcrypt.hashSync(adminPassword, 12);
); await db.run(
'INSERT INTO users (name, display_name, email, password_hash, role, email_verified) VALUES (?, ?, ?, ?, ?, 1)',
['Administrator', 'Administrator', adminEmail, hash, 'admin']
);
log.db.info(`Default admin created: ${adminEmail}`);
}
// Mark as seeded so it never runs again, even if the admin email is changed // Mark as seeded so it never runs again, even if the admin email is changed
await db.run("INSERT INTO settings (key, value) VALUES ('admin_seeded', '1')"); await db.run("INSERT INTO settings (key, value) VALUES ('admin_seeded', '1')");
log.db.info(`Default admin created: ${adminEmail}`);
} }
} }