chore: initial scaffold (Whitelabel-Fork von Pfandsystem)

- Source-Copy von /root/entwicklung/pfandsystem
- docker-compose.yml umgeschrieben: pfandsystem-demo-* Container, Ports 3308/8083/3003 (alle localhost)
- Traefik-Label fuer pfandsystem.dockly.de
- Erweitertes Multi-Tenant-Schema (tenants, tenant_id auf allen Tabellen)
- Neue Tabellen: kunden_bilder, geraete
- Neue Spalten: kunden.anlieferungshinweis, kunden.lieferzeit_bis
- Rollen: superadmin, admin, user, fahrer
- .env.example + README

Code-Refactor (Tailwind, Multi-Tenant-Middleware, Erweiterungen) folgt.
This commit is contained in:
christian
2026-05-26 12:39:17 +00:00
commit d86c898455
82 changed files with 15771 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
import bcrypt from 'bcrypt';
import mysql from 'mysql2/promise';
import dotenv from 'dotenv';
dotenv.config();
async function createAdmin() {
const connection = await mysql.createConnection({
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 3306,
user: process.env.DB_USER || 'pfandsystem',
password: process.env.DB_PASSWORD || 'pfandsystem_secure_password',
database: process.env.DB_NAME || 'pfandsystem'
});
console.log('✅ Verbindung zur Datenbank hergestellt');
// Admin-Daten
const email = 'admin@pfandsystem.de';
const password = 'admin123'; // BITTE ÄNDERN!
const name = 'Administrator';
const rolle = 'admin';
// Prüfe ob Admin bereits existiert
const [existing] = await connection.query(
'SELECT id FROM mitarbeiter WHERE email = ?',
[email]
);
if (existing.length > 0) {
console.log('⚠️ Admin-Benutzer existiert bereits!');
await connection.end();
return;
}
// Passwort hashen
const passwordHash = await bcrypt.hash(password, 10);
// Admin anlegen
await connection.query(
'INSERT INTO mitarbeiter (email, password_hash, name, rolle) VALUES (?, ?, ?, ?)',
[email, passwordHash, name, rolle]
);
console.log('✅ Admin-Benutzer erfolgreich angelegt!');
console.log('📧 Email:', email);
console.log('🔑 Passwort:', password);
console.log('⚠️ BITTE PASSWORT NACH DEM ERSTEN LOGIN ÄNDERN!');
await connection.end();
}
createAdmin().catch(err => {
console.error('❌ Fehler:', err);
process.exit(1);
});