Просмотр исходного кода

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 21 часов назад
Родитель
Сommit
fb9d4ba75d
1 измененных файлов с 29 добавлено и 0 удалено
  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
   betekent "route bestaat, sessie ontbreekt", 404 betekent "resource niet
   aangezet". Dat onderscheid scheelt zoeken in de verkeerde hoek.
   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:
 **⚠️ 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
 "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
 alléén **lezen** (`grep`/`sed`/`drush php-eval` voor metingen, een droogdraai die