1.1 KiB
1.1 KiB
ADR-0009: Profilbilder in der Datenbank
- Status: akzeptiert
- Datum: 2026-10-09
Kontext
Benutzer erhalten ein optionales Profilbild. Die Datenmenge ist klein (wenige Familienmitglieder), Backups sollen einfach bleiben
(ein SQL-Backup, siehe deploy/scripts/backup.sh), und es soll kein zusätzliches Volume nötig sein.
Entscheidung
- Bilder liegen in der Tabelle
UserAvatars(1:1 zum Benutzer,varbinary(max)), höchstens 1 MB. - Erlaubt sind PNG, JPEG und WebP. Der Typ wird serverseitig anhand der Datei-Signatur (Magic Bytes) bestimmt – Dateiname und Content-Type des Clients werden ignoriert; SVG ist bewusst ausgeschlossen (Skript-Risiko).
- Auslieferung über
GET /api/users/{id}/avatar(nur für angemeldete Benutzer). Die URL enthält eine Version (?v=…), daherCache-Control: private, max-age=604800. - Hochladen/Entfernen nur über die Admin-Api (
PUT/DELETE /api/admin/users/{id}/avatar). Ein Selbst-Upload durch Benutzer kann später ergänzt werden.
Konsequenzen
Keine Dateisystem-Abhängigkeit, Bilder sind Teil des Datenbank-Backups. Für große Bildmengen (z. B. Chat-Anhänge, Phase 8) wird separat entschieden.