Implement Node.js backend rewrite with SQLite authentication, admin dashboard and One-Click docker update

This commit is contained in:
Kroonk
2026-04-12 15:40:46 +02:00
parent 1c233db10e
commit 5747813d2d
11 changed files with 2910 additions and 105 deletions

35
backend/database.js Normal file
View File

@@ -0,0 +1,35 @@
const sqlite3 = require('sqlite3').verbose();
const path = require('path');
const bcrypt = require('bcryptjs');
const dbPath = process.env.DB_PATH || path.join(__dirname, '../data/database.sqlite');
const db = new sqlite3.Database(dbPath);
console.log('Using database at', dbPath);
db.serialize(() => {
db.run(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
role TEXT NOT NULL
)`);
db.run(`CREATE TABLE IF NOT EXISTS user_images (
user_id INTEGER,
image_name TEXT,
FOREIGN KEY(user_id) REFERENCES users(id),
UNIQUE(user_id, image_name)
)`);
// Create default admin user if none exists
db.get('SELECT * FROM users WHERE username = ?', ['admin'], (err, row) => {
if (!row) {
const hash = bcrypt.hashSync('admin123', 10);
db.run('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)', ['admin', hash, 'admin']);
console.log('Default admin created with credentials: admin / admin123');
}
});
});
module.exports = db;