Neue Action auftraege_status&ids=1,2,3 → [{id, status}] in einer Abfrage.
ElektroPlan blendet damit unter Datei → Öffnen Zeichnungen abgeschlossener
und stornierter Aufträge aus. IDs werden einzeln als Zahl gelesen, höchstens
1000, Entity-Prüfung wie bei auftraege_listen.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
dokument_upload legte die PDF nur in den Auftragsordner. Ohne Eintrag in
llx_ecm_files indexiert Dolibarr sie selbst als „unknown", und der Kasten
„Verknüpfte Dokumente" (FileArchive 4.15 filtert nach gen_or_uploaded)
zeigte sie weiter vorne. Jetzt: Eintrag mit gen_or_uploaded = 'uploaded'
und Beleg-Bezug; erneutes Speichern aktualisiert den Eintrag statt ihn
doppelt anzulegen.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Aus /dolibarr audit Report:
- en_US: 5 fehlende Tab-/Placeholder-Keys ergänzt (Parity 100%)
- LIKE-Wildcard-Escape: %, _ und \\ im User-Input werden maskiert bevor
in LIKE '%..%'-Pattern eingebaut (sonst matched "100%" zu viel)
Betrifft auftraege_listen (Z.75-77) und kunden_suchen (Z.124)
- Rate-Limit: File-basiert nach KB #354 — max. 10 fehlgeschlagene Token-
Checks pro IP in 15 Minuten, dann 429. Bei Erfolg wird Zähler resettet.
Zähler liegen unter DOL_DATA_ROOT/eplan/loginattempts/<sha1(ip)>.json
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Das ElektroPlan-Backend spricht nicht mehr die Dolibarr-REST-API an
(API-Key-Flow kaputt, REST-Modul nicht zuverlässig), sondern einen
eigenen NOLOGIN-Endpoint im Eplan-Modul.
- ajax/pwa_api.php: NOLOGIN-Endpoint, Auth via X-Eplan-Token-Header
gegen EPLAN_PWA_SECRET (hash_equals, timing-safe)
Actions: ping, auftraege_listen, auftrag_details, kunden_suchen,
dokument_upload (multipart POST)
- lib/eplan_token.lib.php: Lazy-init Token, Rotation, Verifikation
- admin/setup.php: Token-Feld (readonly, anklickbar zum Markieren),
Endpoint-URL zum Kopieren, Button "Neuen Token erzeugen"
- de/en-Sprachdateien: EplanApiToken* Keys
Muster aus KB #354 (Bericht/Baustelle-PWA).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>