Dateien nach "backend/src" hochladen
This commit is contained in:
@@ -83,10 +83,10 @@ db.exec(`
|
|||||||
`);
|
`);
|
||||||
|
|
||||||
// Standard-Admin beim ersten Start anlegen
|
// Standard-Admin beim ersten Start anlegen
|
||||||
if (!db.prepare('SELECT id FROM users WHERE username = ?').get('admin')) {
|
if (db.prepare('SELECT COUNT(*) c FROM users').get().c === 0) {
|
||||||
db.prepare('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)')
|
db.prepare('INSERT INTO users (username, password_hash, role) VALUES (?, ?, ?)')
|
||||||
.run('admin', bcrypt.hashSync('admin123', 12), 'admin');
|
.run('admin', bcrypt.hashSync('admin123', 12), 'admin');
|
||||||
console.log('✅ Admin angelegt: admin / admin123 → Bitte Passwort sofort ändern!');
|
console.log('✅ Erster Start: Admin angelegt: admin / admin123 → Bitte Passwort sofort ändern!');
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Migrationen (werden bei jedem Start geprüft) ─────────────────────────────
|
// ── Migrationen (werden bei jedem Start geprüft) ─────────────────────────────
|
||||||
|
|||||||
@@ -2,19 +2,18 @@ const express = require('express');
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
require('./db'); // Datenbank + Tabellen initialisieren
|
require('./db');
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
|
|
||||||
// ── Core-Routen ───────────────────────────────────────────────────────────────
|
// ── API ───────────────────────────────────────────────────────────────────────
|
||||||
app.use('/api/auth', require('./routes/auth'));
|
app.use('/api/auth', require('./routes/auth'));
|
||||||
app.use('/api/admin', require('./routes/admin'));
|
app.use('/api/admin', require('./routes/admin'));
|
||||||
app.use('/api/dashboard', require('./routes/dashboard'));
|
app.use('/api/dashboard', require('./routes/dashboard'));
|
||||||
app.use('/api/system', require('./routes/system'));
|
app.use('/api/system', require('./routes/system'));
|
||||||
|
|
||||||
// ── Tool-Routen automatisch laden ─────────────────────────────────────────────
|
// Tool-Routen automatisch laden
|
||||||
// Neues Tool: Datei unter src/tools/<name>/routes.js ablegen → wird automatisch eingebunden
|
|
||||||
const toolsDir = path.join(__dirname, 'tools');
|
const toolsDir = path.join(__dirname, 'tools');
|
||||||
fs.readdirSync(toolsDir, { withFileTypes: true })
|
fs.readdirSync(toolsDir, { withFileTypes: true })
|
||||||
.filter(d => d.isDirectory())
|
.filter(d => d.isDirectory())
|
||||||
@@ -26,16 +25,19 @@ fs.readdirSync(toolsDir, { withFileTypes: true })
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ── React-Frontend ausliefern ─────────────────────────────────────────────────
|
// ── Frontend ──────────────────────────────────────────────────────────────────
|
||||||
const PUBLIC = path.join(__dirname, '../public');
|
const PUBLIC = path.join(__dirname, '../public');
|
||||||
|
|
||||||
// Service Worker braucht diesen Header damit er auf '/' zugreifen darf
|
app.get('/manifest.json', (_req, res) => {
|
||||||
app.use((req, res, next) => {
|
res.setHeader('Content-Type', 'application/manifest+json');
|
||||||
if (req.path === '/sw.js') {
|
res.setHeader('Cache-Control', 'no-cache');
|
||||||
|
res.sendFile(path.join(PUBLIC, 'manifest.json'));
|
||||||
|
});
|
||||||
|
app.get('/sw.js', (_req, res) => {
|
||||||
|
res.setHeader('Content-Type', 'application/javascript');
|
||||||
res.setHeader('Service-Worker-Allowed', '/');
|
res.setHeader('Service-Worker-Allowed', '/');
|
||||||
res.setHeader('Cache-Control', 'no-cache');
|
res.setHeader('Cache-Control', 'no-cache');
|
||||||
}
|
res.sendFile(path.join(PUBLIC, 'sw.js'));
|
||||||
next();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use(express.static(PUBLIC));
|
app.use(express.static(PUBLIC));
|
||||||
|
|||||||
Reference in New Issue
Block a user