Initialer Commit: Kundenverwaltung (PHP/Smarty)

Bestehende Codebasis als Ausgangsstand aufgenommen.

- .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache
  (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen;
  Verzeichnisstruktur ueber .gitkeep erhalten
- .gitattributes: Zeilenenden normalisiert (LF im Repo),
  Binaerformate markiert
- db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der
  Anwendung aus der externen Konfiguration statt hartkodiert aus der
  Datei; Passwort wird ueber eine temporaere Optionsdatei statt per
  Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet,
  Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 16:41:18 +02:00
co-authored by Claude Opus 5
commit e6eb55bc4b
2225 changed files with 1070301 additions and 0 deletions
@@ -0,0 +1,36 @@
VinCSS FIDO2 Authenticator
--------------------------
-----BEGIN CERTIFICATE-----
MIIB9TCCAZsCFDW44aglxZiY/J3DJFC4e5o74220MAoGCCqGSM49BAMCMHwxCzAJ
BgNVBAYTAlZOMRIwEAYDVQQIDAlIb0NoaU1pbmgxDzANBgNVBAoMBlZpbkNTUzEP
MA0GA1UECwwGUm9vdENBMRYwFAYDVQQDDA1jYS52aW5jc3MubmV0MR8wHQYJKoZI
hvcNAQkBFhBhZG1pbkB2aW5jc3MubmV0MCAXDTE5MTAyMzA0MTg1NFoYDzIwNjkx
MDEwMDQxODU0WjB8MQswCQYDVQQGEwJWTjESMBAGA1UECAwJSG9DaGlNaW5oMQ8w
DQYDVQQKDAZWaW5DU1MxDzANBgNVBAsMBlJvb3RDQTEWMBQGA1UEAwwNY2Eudmlu
Y3NzLm5ldDEfMB0GCSqGSIb3DQEJARYQYWRtaW5AdmluY3NzLm5ldDBZMBMGByqG
SM49AgEGCCqGSM49AwEHA0IABO0ZlRMqkOPRqHNa4Xj7oTvEKHLtjWexvuAC8WLl
K53TIGXc2JJ3GbEaVo10tFjnLHLXheKadZCj2HEz3NJSaUIwCgYIKoZIzj0EAwID
SAAwRQIhALHeqkcl8O7ky1iRXicVAC7x2zsU12vS3BOVyXCgedE3AiBlM++xnzOO
Es2m3sF8/Ztbw6UL/AMT1ZXt5fyqUhIuWw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDHDCCAsKgAwIBAgIBATAKBggqhkjOPQQDAjB8MQswCQYDVQQGEwJWTjESMBAG
A1UECAwJSG9DaGlNaW5oMQ8wDQYDVQQKDAZWaW5DU1MxDzANBgNVBAsMBlJvb3RD
QTEWMBQGA1UEAwwNY2EudmluY3NzLm5ldDEfMB0GCSqGSIb3DQEJARYQYWRtaW5A
dmluY3NzLm5ldDAgFw0yMzEwMjUyMzUxNTNaGA8yMDczMTAxMjIzNTE1M1owgZIx
CzAJBgNVBAYTAlZOMRIwEAYDVQQIDAlIb0NoaU1pbmgxDzANBgNVBAoMBlZpbkNT
UzEiMCAGA1UECwwZQXV0aGVudGljYXRvciBBdHRlc3RhdGlvbjEZMBcGA1UEAwwQ
ZmlkbzIudmluY3NzLm5ldDEfMB0GCSqGSIb3DQEJARYQYWRtaW5AdmluY3NzLm5l
dDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDcllSkNyy2ebVJuUh7EDR4o+pfF
XtDRwCXun0L/2u1wV8QYopmrKvN2YmWU3xfEou9GYlg8FVSyiuI7XhsnVT2jggEa
MIIBFjAdBgNVHQ4EFgQUtTmt+HkgBmiKKtxn5Afr521TIsEwgaQGA1UdIwSBnDCB
maGBgKR+MHwxCzAJBgNVBAYTAlZOMRIwEAYDVQQIDAlIb0NoaU1pbmgxDzANBgNV
BAoMBlZpbkNTUzEPMA0GA1UECwwGUm9vdENBMRYwFAYDVQQDDA1jYS52aW5jc3Mu
bmV0MR8wHQYJKoZIhvcNAQkBFhBhZG1pbkB2aW5jc3MubmV0ghQ1uOGoJcWYmPyd
wyRQuHuaO+NttDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DATBgsrBgEEAYLlHAIB
AQQEAwIFIDAhBgsrBgEEAYLlHAEBBAQSBBBf24G4U/BJZ6iB9ewm/k0YMAoGCCqG
SM49BAMCA0gAMEUCIQDzR0ha1bt1YA91JmBVKxTqBN7gAhhUlBunRNOugiJ2hQIg
UmusQ0K6pzRn9zTgldNrywl6AUipPO8t1YzPwQlqJiM=
-----END CERTIFICATE-----