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 e2124220e5
2225 changed files with 1070301 additions and 0 deletions
@@ -0,0 +1,47 @@
OneSpan FIDO Touch
------------------
-----BEGIN CERTIFICATE-----
MIIB1zCCAXygAwIBAgIEeCoOuTAKBggqhkjOPQQDAjBqMQswCQYDVQQGEwJVUzEQ
MA4GA1UEChMHT25lU3BhbjEiMCAGA1UECxMZQXV0aGVudGljYXRvciBBdHRlc3Rh
dGlvbjElMCMGA1UEAxMcT25lU3BhbiBEaWdpcGFzcyA3ODUgRklETyBDQTAeFw0x
ODA4MDExMDQwMDhaFw00ODA4MDExMDQwMDhaMGoxCzAJBgNVBAYTAlVTMRAwDgYD
VQQKEwdPbmVTcGFuMSIwIAYDVQQLExlBdXRoZW50aWNhdG9yIEF0dGVzdGF0aW9u
MSUwIwYDVQQDExxPbmVTcGFuIERpZ2lwYXNzIDc4NSBGSURPIENBMFkwEwYHKoZI
zj0CAQYIKoZIzj0DAQcDQgAE7pgEv+7pBW3vafi3AGGJRcUwfLrLbvbfoo0ZZs4Y
/18dxPPsr97yP8qGPeVVxA5cqtvDZ0e0UqRYNrxYJtr+SKMQMA4wDAYDVR0TBAUw
AwEB/zAKBggqhkjOPQQDAgNJADBGAiEAgOqPpSm+j+Nl6mqji6a9ibtyS6WNqWxg
Q3NI//nq/XsCIQDo1uHgj76YTfjJPQHtGOcos2C3upUfSMiZKQgpclr3gg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB5TCCAYqgAwIBAgIEeCoOuTAKBggqhkjOPQQDAjBsMQswCQYDVQQGEwJVUzEQ
MA4GA1UEChMHT25lU3BhbjEiMCAGA1UECxMZQXV0aGVudGljYXRvciBBdHRlc3Rh
dGlvbjEnMCUGA1UEAxMeT25lU3BhbiBEaWdpcGFzcyBGSURPIFRvdWNoIENBMB4X
DTE5MDQyOTA5MTg1OVoXDTQ0MDQyOTA5MTg1OVoweTELMAkGA1UEBhMCVVMxEDAO
BgNVBAoTB09uZVNwYW4xIjAgBgNVBAsTGUF1dGhlbnRpY2F0b3IgQXR0ZXN0YXRp
b24xNDAyBgNVBAMTK09uZVNwYW4gRGlnaXBhc3MgRklETyBUb3VjaCBBdHRlc3Rh
dGlvbiBLZXkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQff1lHI1B3VEjzgn+L
LgaBjDb54eIJWw/j3zTXaT3unEIXpGQjmB1K9R8Ka/10gb4u2BsoYXlrLfxG7m8z
NUFlow0wCzAJBgNVHRMEAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDvqQIW/++ulAmY
TNvi5bYgddL5wFA3255VDK/2g1XQOQIhAOo4DxqyS24RnRnOd7XWivwOLdJBmBBq
O2I6s4Oyim0c
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICuTCCAl+gAwIBAgIJAKq5cjZYxI4AMAoGCCqGSM49BAMCMIG4MQswCQYDVQQG
EwJCRTEQMA4GA1UECAwHQnJhYmFudDEYMBYGA1UEBwwPU3Ryb21iZWVrLUJldmVy
MRwwGgYDVQQKDBNWQVNDTyBEYXRhIFNlY3VyaXR5MSIwIAYDVQQLDBlBdXRoZW50
aWNhdG9yIEF0dGVzdGF0aW9uMR0wGwYDVQQDDBRWQVNDTyBEUDc4NUZJRE8gUk9P
VDEcMBoGCSqGSIb3DQEJARYNam92QHZhc2NvLmNvbTAeFw0xODA0MTExMjQ1MDRa
Fw0yODA0MDgxMjQ1MDRaMIG4MQswCQYDVQQGEwJCRTEQMA4GA1UECAwHQnJhYmFu
dDEYMBYGA1UEBwwPU3Ryb21iZWVrLUJldmVyMRwwGgYDVQQKDBNWQVNDTyBEYXRh
IFNlY3VyaXR5MSIwIAYDVQQLDBlBdXRoZW50aWNhdG9yIEF0dGVzdGF0aW9uMR0w
GwYDVQQDDBRWQVNDTyBEUDc4NUZJRE8gUk9PVDEcMBoGCSqGSIb3DQEJARYNam92
QHZhc2NvLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLDcYiuC92LRiyqa
GA1MRIH73mgOpbgwvoxsr+nPBj+438uIBOMn9p4iT3jKfcBaDPs44+gg2tfYlqFo
d7rNFsGjUDBOMB0GA1UdDgQWBBSejT9/k8LNFh+V4s5g4SbE0O38UTAfBgNVHSME
GDAWgBSejT9/k8LNFh+V4s5g4SbE0O38UTAMBgNVHRMEBTADAQH/MAoGCCqGSM49
BAMCA0gAMEUCIQDUMVXd4XSA1br+6n1w2Qk9TcX5ouZDVcaHsFDDmx1ztQIgMtG3
oABh6bGVzaLN80HtkycWAGUVSt7kDdQYIjNzTCQ=
-----END CERTIFICATE-----