Docker Compose mit drei Services (nginx auf Port 8000), Migrationsmechanik, Update- und Backup-Skript. Anwendung: Router mit CSRF-Prüfung, Anmeldung und Ersteinrichtung, zentraler Einstellungsdialog mit Reitern, ein- und ausschaltbares Debug-Log mit Maskierung von Zugangsdaten. Layout nach Vorbild des FinanzManagers: feste Navigation links, Werkzeugleiste oben, Tab-Leiste; Farbschema hell/dunkel/System. Tests: 51 PHP-Prüfungen und 7 Playwright-Tests, alle grün.
35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
-- Grundgerüst: Benutzer und zentrale Einstellungen.
|
|
--
|
|
-- Fachliche Tabellen (Konten, Kategorien, Buchungen …) kommen in Phase 1 und 2
|
|
-- als eigene Migrationen dazu.
|
|
|
|
CREATE TABLE IF NOT EXISTS benutzer (
|
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
benutzername VARCHAR(64) NOT NULL,
|
|
anzeigename VARCHAR(128) NOT NULL DEFAULT '',
|
|
passwort_hash VARCHAR(255) NOT NULL,
|
|
aktiv TINYINT(1) NOT NULL DEFAULT 1,
|
|
letzte_anmeldung DATETIME NULL,
|
|
erstellt_am DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uq_benutzername (benutzername)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Alle Programmeinstellungen an einer Stelle; der Einstellungsdialog hängt
|
|
-- seine Reiter über das Feld "bereich" ein.
|
|
CREATE TABLE IF NOT EXISTS einstellungen (
|
|
schluessel VARCHAR(64) NOT NULL,
|
|
wert TEXT NULL,
|
|
bereich VARCHAR(32) NOT NULL DEFAULT 'allgemein',
|
|
geaendert_am DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (schluessel)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
INSERT INTO einstellungen (schluessel, wert, bereich) VALUES
|
|
('mandant_name', 'Privat', 'allgemein'),
|
|
('waehrung', 'EUR', 'allgemein'),
|
|
('erster_monat', '1', 'buchhaltung'),
|
|
('darstellung_thema', 'system', 'darstellung'),
|
|
('zeilen_pro_seite', '100', 'darstellung'),
|
|
('debug_log_aktiv', '0', 'diagnose')
|
|
ON DUPLICATE KEY UPDATE schluessel = schluessel;
|