diff --git a/CLAUDE.md b/CLAUDE.md index bbea19d..d0bfd46 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # Bericht-Modul — Projekt-Status & Architektur -## Stand 2026-08-21 (Version 1.5.0) +## Stand 2026-08-22 (Version 1.5.1) Dolibarr-Custom-Modul für Arbeitsberichte mit Browser-PDF-Editor + PWA-API-Layer + Lieferschein-Unterschrift. @@ -154,16 +154,24 @@ PWA-API-Layer + Usability-Features: - ✅ 4.b Touch-Unterschrift (POST /api/pages.php?action=signature) - ✅ Datei-Typ-Unterscheidung: Bilder (Modal), Audio (Player), PDFs (Canvas), Dokumente (Download) +**Auth-Hinweis (Stand 1.5.1):** Der Block unten stammt aus der JWT-Zeit. Seit der +SSO-Migration laeuft alles ueber das HttpOnly-Cookie `awl_sso` (Modul `awlauth`) — +kein Bearer-Token, kein `?jwt=`-Query-Parameter mehr. `api/_jwt.php` existiert nicht mehr. +Endpoints mit `awlauth_require` brauchen zusaetzlich den Header `X-Requested-With` +(CSRF); reine GET-Reads (`photo.php`, `pdf.php`) nutzen `awlauth_verify` ohne diesen. + API-Endpoints (neue): -- POST /api/auth.php — JWT-Login (username, password) +- POST /api/auth.php — Login (username, password) -> setzt awl_sso-Cookie - GET /api/orders.php — Aufträge des Users (filter: q, open) - GET /api/orders.php?id= — Order-Detail - GET /api/orders.php?id=&action=photos — Order-Dateien (Bilder/Audio/PDFs/Dokumente) - POST /api/orders.php?action=create — Neuer Order (socid, title, ref_client, date) -- GET /api/photo.php?relpath= — Datei-Serving (JWT via Header oder Query-Param, Whitelist: facture|commande|propal|bericht) +- GET /api/photo.php?relpath= — Datei-Serving (Whitelist: facture|commande|propal|bericht) +- GET /api/photo.php?relpath=&size=thumb&w= — Thumbnail (1.5.1, GD + Cache + ETag) - POST /api/pages.php?action=signature&bericht_id= — Touch-Unterschrift - DELETE /api/pages.php?id= — Seite löschen -- POST /api/pages.php?id= — Seite-Notiz / Rotation +- POST /api/pages.php?id= — Seite-Notiz / Titel / Rotation / Layout +- GET/POST /api/note.php?order_id= — Textnotizen zum Auftrag (1.5.1) PWA neue Komponenten (app.js): - openFileViewer() — Generischer Dateibetrachter (Bilder/PDFs/Audio/Download) @@ -215,9 +223,29 @@ Vollständiger Workflow für Kunden-Unterschrift auf dem Handy. Source-Repo: `da ### Wichtige Fallen - `EXPEDITION_ADDON_PDF_ODT_PATH` enthält wörtlich den String `"DOL_DATA_ROOT/..."` → muss mit `preg_replace('/DOL_DATA_ROOT/', DOL_DATA_ROOT, $d)` aufgelöst werden - `llx_element_element`-Richtung: **commande = source, shipping = target** (NICHT umgekehrt) -- JWT für ``/``-Tags: Query-Param `?jwt=` als Fallback in `api/_jwt.php`, da diese Tags keine Authorization-Header senden +- ~~JWT für ``/``-Tags per `?jwt=`~~ — mit der SSO-Migration hinfällig: das + `awl_sso`-Cookie geht same-origin automatisch mit, auch bei ``/`