From 36092027d270860836b6bdc549ad84dcd3c4b6a1 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 27 Jul 2026 21:26:46 +0200 Subject: [PATCH] sdasd --- .projektstructure.txt | 4 ++-- PROJECT_CONTEXT.md | 4 ++-- README.md | 4 ++-- public/assets/js/app.js | 10 +++++++--- public/page/datenschutz.php | 8 ++++---- src/App/Avatar/Lorelei.php | 2 +- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.projektstructure.txt b/.projektstructure.txt index cccebce..6c0dde2 100755 --- a/.projektstructure.txt +++ b/.projektstructure.txt @@ -1,9 +1,9 @@ Anweisung: Projektstruktur (Basis-Template) wie in „papa-kind-treff“ Aktueller Projektstand -- Papa-Kind-Treff nutzt im Mitgliederbereich DiceBear `lorelei` über einen internen API-Proxy mit lokalem Cache. +- Papa-Kind-Treff nutzt im Mitgliederbereich DiceBear `lorelei` direkt für externe SVG-Avatare. - Relevante Logik liegt in `src/App/Avatar/Lorelei.php`. -- Der Avatar-Proxy liegt unter `public/page/api/avatar.php`. +- Die Avatar-Logik erzeugt direkte DiceBear-URLs; der frühere Proxy wird aktuell nicht mehr für die Auslieferung verwendet. - Die visuelle Avatar-Konfiguration liegt im Dashboard-Modal unter `partials/landing/account/dashboard.php` und rendert Komponenten-Vorschauen live nach. - Neue Grundvarianten werden im gleichen Modal als separates Auswahlraster eingeblendet und übernehmen die aktuell gewählten Lorelei-Komponenten. - Alte statische Avatar-Presets und frühere Layer-Assets sind entfernt; aktiv ist nur noch der Lorelei-Generator. diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md index 4bf5047..0fd2dc7 100644 --- a/PROJECT_CONTEXT.md +++ b/PROJECT_CONTEXT.md @@ -20,9 +20,9 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter. Kernbereiche sind l - Die Community ist hierarchisch aufgebaut: Kategorien -> Boards -> Threads -> Posts. - Moderation ist getrennt vom normalen Community-Frontend in einem eigenen Adminbereich. - Standortfunktionen sind relevant für lokale Treffen und werden künftig weiter ausgebaut. -- Profilbilder werden aktuell über DiceBear im Stil `lorelei` serverseitig erzeugt und lokal gecacht. +- Profilbilder werden aktuell über DiceBear im Stil `lorelei` direkt als externe SVG geladen. - Der Avatar-Editor bietet aktuell visuelle Komponenten-Vorschauen statt reiner Text-Dropdowns. -- Frühere statische Preset-Avatar-Assets wurden entfernt; der aktuelle Stand nutzt nur noch den Generator mit Proxy/Cache. +- Frühere statische Preset-Avatar-Assets wurden entfernt; der aktuelle Stand nutzt nur noch den Generator mit direkter DiceBear-Auslieferung. ## Navigation / Konto - Eingeloggte Nutzer sehen rechts ein Profil-Menü statt einzelner `Dashboard`-/`Logout`-Buttons. diff --git a/README.md b/README.md index 4a3a023..55ee957 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale - Impressum, Datenschutz-&-Cookies-Seite und Über-uns - standortbasierte Sortierung für die neuesten Treffen - eigener Einstellungsbereich für Standortfreigabe, Browser-Hinweise und Consent-Verwaltung -- modernes Avatar-System auf Basis von DiceBear `lorelei`, serverseitig über einen lokalen Proxy mit Cache ausgeliefert +- modernes Avatar-System auf Basis von DiceBear `lorelei`, direkt als externe SVG ausgeliefert - Profilbild-Generator mit visueller Komponenten-Auswahl für Augen, Augenbrauen, Mund, Brille, Haare, Bart und Ohrringe sowie einer separaten Auswahl neuer Grundvarianten - keine statischen Avatar-Preset-Dateien mehr im Repository; Vorschau und Auswahl laufen vollständig über den Lorelei-Generator - Consent-Manager für Analyse und externe Dienste @@ -50,7 +50,7 @@ Der aktuelle Code nutzt oder kann nutzen: - lokale Standortspeicherung via Cookie, `localStorage`, `sessionStorage` (`external_services`) - Leaflet von `unpkg.com` (`external_services`) - OpenStreetMap Nominatim (`external_services`) -- DiceBear `lorelei` für serverseitig erzeugte Profilbilder +- DiceBear `lorelei` für extern geladene Profilbilder Wichtig: - Nicht notwendige Analyse- und Drittanbieterfunktionen dürfen erst nach Einwilligung aktiv werden. diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 7846d68..248d444 100755 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -744,6 +744,7 @@ document.addEventListener('DOMContentLoaded', () => { }; const avatarComponentFields = Object.keys(avatarComponentFieldMap); + const avatarEndpoint = 'https://api.dicebear.com/10.x/lorelei/svg'; const buildAvatarParams = (form, overrides = {}) => { const seed = overrides.avatar_preset || readAvatarValue(form, 'avatar_preset'); @@ -770,7 +771,8 @@ document.addEventListener('DOMContentLoaded', () => { const params = buildAvatarParams(form); if (!params) return; - const url = `/api/avatar?${params.toString()}`; + params.set('size', '256'); + const url = `${avatarEndpoint}?${params.toString()}`; if (!url) return; image.src = url; }; @@ -782,7 +784,8 @@ document.addEventListener('DOMContentLoaded', () => { const params = buildAvatarParams(form, { [field]: value }); if (!params) return; - image.src = `/api/avatar?${params.toString()}`; + params.set('size', '256'); + image.src = `${avatarEndpoint}?${params.toString()}`; }); }; @@ -800,9 +803,10 @@ document.addEventListener('DOMContentLoaded', () => { card.type = 'button'; card.className = 'avatar-seed-card'; card.setAttribute('data-avatar-seed-option', seed); + params.set('size', '256'); card.innerHTML = ` - Grundvariante ${index + 1} + Grundvariante ${index + 1} Variante ${index + 1} `; diff --git a/public/page/datenschutz.php b/public/page/datenschutz.php index de72df1..e9d9698 100644 --- a/public/page/datenschutz.php +++ b/public/page/datenschutz.php @@ -151,9 +151,9 @@ $clientCookie = $config->cookiePrefix() . 'client';

10. Profilbilder mit DiceBear

- Profilbilder werden serverseitig über den Dienst DiceBear im Stil „Lorelei“ erzeugt. Dabei wird für die - Generierung nur der im Profil gespeicherte Avatar-Seed verwendet. Der Abruf erfolgt über unsere Anwendung - und wird lokal zwischengespeichert, sodass dein Browser die Avatar-Grafiken nicht direkt bei DiceBear lädt. + Profilbilder werden über den Dienst DiceBear im Stil „Lorelei“ erzeugt. Dabei wird für die + Generierung nur der im Profil gespeicherte Avatar-Seed verwendet. Dein Browser lädt die Avatar-Grafiken + direkt von DiceBear.

Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO, soweit die Avatar-Erzeugung Teil des gewählten @@ -166,7 +166,7 @@ $clientCookie = $config->cookiePrefix() . 'client';

Eine Weitergabe erfolgt nur, soweit sie für den Betrieb der Website oder einzelner Funktionen erforderlich ist. Dazu können insbesondere technische Hosting-Dienstleister, E-Mail-Dienstleister, - Analyse-Dienstleister, DiceBear für die serverseitige Avatar-Erzeugung sowie die oben genannten externen Karten- und Standortdienste gehören. + Analyse-Dienstleister, DiceBear für die Avatar-Erzeugung sowie die oben genannten externen Karten- und Standortdienste gehören.

diff --git a/src/App/Avatar/Lorelei.php b/src/App/Avatar/Lorelei.php index 13b679d..08bfeab 100644 --- a/src/App/Avatar/Lorelei.php +++ b/src/App/Avatar/Lorelei.php @@ -127,7 +127,7 @@ final class Lorelei public static function buildProxyUrl(array $row): string { - return '/api/avatar?' . http_build_query(self::apiQuery($row)); + return 'https://api.dicebear.com/10.x/lorelei/svg?' . http_build_query(self::apiQuery($row) + ['size' => '256']); } public static function previewChoices(array $row, string $field): array