Beim Finalisieren einer Rechnung wurde bisher kein Beleg und keine
Buchungszeilen erstellt – der Nutzer musste danach manuell "Buchen"
klicken, was nicht offensichtlich war.
- finalize() erstellt jetzt atomar Beleg + Buchungszeilen (via
createBelegAndBookings) innerhalb derselben Transaktion
- Buchungslogik aus book() in private Methode extrahiert (DRY),
book()-Route bleibt für bereits finalisierte, noch ungebuchte
Rechnungen erhalten
- "Buchen"-Button in der Show-View entfernt (nicht mehr nötig)
- HTTP Basic Auth durch cookie-basierte Session-Auth ersetzt (24 h absolutes Timeout)
- Neue users-Tabelle (Migration 005) mit bcrypt-Passwort-Hashing
- Login-/Logout-Routen und eigenständiges Login-Template
- Ersteinrichtungsflow: erster Benutzer beim ersten Start direkt über /login anlegen
- Neuer Menüpunkt "Benutzer" (/useradmin) zum Anlegen, Deaktivieren und Löschen von Benutzern
- AUTH_USER/AUTH_PASS aus Konfiguration und docker-compose.yml entfernt