|
@@ -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
|