Forráskód Böngészése

CLAUDE.md: twee blijvende inzichten uit taak 130

De nesting-valkuil bij een nieuwe Services-resource (kostte vandaag een
ronde), en de twee harde randvoorwaarden voor social login in deze app.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 16 órája
szülő
commit
fb9d4ba75d
1 módosított fájl, 29 hozzáadás és 0 törlés
  1. 29 0
      CLAUDE.md

+ 29 - 0
CLAUDE.md

@@ -5278,6 +5278,35 @@ minder calls per scherm, niet in Views.
   betekent "route bestaat, sessie ontbreekt", 404 betekent "resource niet
   aangezet". Dat onderscheid scheelt zoeken in de verkeerde hoek.
 
+**Een nieuwe Services-resource die in de UI opduikt als naamloze ACTIE van een
+andere resource: je haakjes staan één niveau te diep.** Bevestigd 2026-09-21
+(`app_social_login` belandde in `nieuwsbrieven['actions']`). Het beeld: de
+resource staat wél in het resourcescherm, mét vinkje, maar **zonder
+uitklappijltje** en met *"No description is available"* — want op dát niveau is
+er geen `help`, en de geneste `'actions' => array('claim' => ...)` is voor
+Services een onbekende sleutel binnen een actie-definitie. Daardoor wordt er
+geen route geregistreerd en blijft het endpoint 404. Tel bij het toevoegen van
+een resource dus de sluithaakjes van de vorige: er moeten er **drie** tussen de
+laatste actie en jouw nieuwe sleutel (actie → `actions` → resource). Snelste
+bevestiging zonder de UI: een `curl` op het endpoint — 404 is "niet
+geregistreerd", 403 is "route bestaat, geen sessie".
+- Terzijde: `mijn_aanmeldingen` en `aanmelding_kloonbron` missen de
+  `'operations' =>`-laag (hun `'index'` hangt direct onder de resource) en
+  werken tóch — beide geven 403. Niet "repareren".
+
+**OAuth (Facebook/Google) kan NOOIT in een embedded WebView — en de app heeft
+geen cookiejar.** Twee harde randvoorwaarden voor elke social-login-route in dit
+project, uitgezocht 2026-09-21. (1) Google weigert OAuth in een WebView met
+`disallowed_useragent`, Facebook doet hetzelfde; het moet een Chrome Custom Tab
+/ `SFSafariViewController` zijn → `url_launcher` met
+`LaunchMode.inAppBrowserView`, **niet** `inAppWebView`. (2) De app bewaart
+`sessid`/`session_name` als losse App State-waarden en plakt zelf `Cookie:` op
+elke call; een browser-login zet een cookie in de *browser* en levert de app
+dus niets op. Er moet altijd iets zijn dat de sessie **als waarde** teruggeeft.
+**OneAll's Direct Connect** (één URL per netwerk, token komt terug op je
+callback) zit alleen in het betaalde **Advanced**-plan; Starter geeft een harde
+weigering. Zie taak 130 in `TASKS.md` voor de volledige keten.
+
 **⚠️ CLAUDE KOMT NIET AAN DRUPAL — staande regel, Bob expliciet 2026-09-21:
 "ik doe altijd drupal dingen. jij mag niet bij drupal!"** Claude mag op de server
 alléén **lezen** (`grep`/`sed`/`drush php-eval` voor metingen, een droogdraai die