pediatric-ai-scribe-v3/public/js
Daniel 82ed46d01b Fix Turnstile in the mobile app; drop it from login
The Turnstile challenge failed reliably inside the Capacitor WebView,
which blocked login and registration from the Android app.

Three separate causes:

1. Android WebView blocks third-party cookies by default. Turnstile runs
   in a cross-origin iframe from challenges.cloudflare.com and needs its
   own storage, so the widget never emitted a token. MainActivity now
   calls setAcceptThirdPartyCookies on the app's own WebView.

2. The register handler read the Turnstile response with an unscoped
   document.querySelector, which matched the *login* widget's input (it
   comes first in the DOM). Registration therefore submitted the login
   widget's token — single-use with a 5 minute expiry, so any prior login
   attempt or slow signup made it fail server-side.

3. The register and forgot-password widgets auto-rendered inside forms
   that start at display:none, where Turnstile does not reliably complete
   a challenge, and nothing re-rendered them when the form was shown.

Widgets are now rendered explicitly when their form first becomes
visible, and tokens are captured from the render callback instead of
being read back out of the injected input — which makes the unscoped
lookup in (2) structurally impossible. Added error/expired/timeout
callbacks so a widget failure surfaces the Cloudflare error code instead
of failing silently behind a generic toast.

Login is no longer gated at all. It is the path mobile users hit
constantly, and it is already covered by a 10-per-15-min per-IP rate
limit, a constant-time credential check, and TOTP 2FA. Registration and
password reset — the endpoints that actually attract bots — stay gated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 17:22:03 +02:00
..
assistant Fix authenticated mobile image downloads 2026-06-09 16:02:11 +02:00
bedside allow bedside respiratory without weight 2026-05-08 09:10:33 +02:00
calculators consolidate calculator growth helpers 2026-05-08 04:36:39 +02:00
learningHub extract learning hub ai panel controller 2026-05-08 16:54:48 +02:00
notes split notes frontend modules 2026-05-08 02:44:22 +02:00
wellVisit extract well visit schedule data 2026-05-08 05:11:29 +02:00
admin-docs.js docs refresh current workflows 2026-05-09 00:40:45 +02:00
admin.js feat: improve clinical assistant prompts 2026-06-06 00:01:07 +02:00
app.js document architecture and harden rendering 2026-05-10 01:07:56 +02:00
audioBackup.js harden audio backup settings rendering 2026-05-08 08:23:38 +02:00
auth.js Fix Turnstile in the mobile app; drop it from login 2026-07-30 17:22:03 +02:00
authFetch.js convert auth helpers to modules 2026-05-08 07:56:41 +02:00
calc-math.js feat: Bedside clinical reference module + age→weight estimator + dose-math unit tests 2026-04-20 02:49:42 +02:00
calculators.js remove redundant module wrappers 2026-05-08 05:30:32 +02:00
chartReview.js feat: add patient education handouts 2026-05-08 22:26:53 +02:00
clinicalAssistant.js Fix generated image mobile downloads 2026-06-09 15:20:06 +02:00
diagrams.js fix diagram delete confirmation 2026-05-08 06:28:12 +02:00
documents.js convert settings loaders to modules 2026-05-08 07:17:29 +02:00
drugs-loader.js convert admin docs and drug loader to modules 2026-05-08 07:50:26 +02:00
e2e-bootstrap.js fix docs toc fallback and remove redundant iifes 2026-05-08 23:08:47 +02:00
ed-encounters.js feat: add patient education handouts 2026-05-08 22:26:53 +02:00
encounters.js fix docs toc fallback and remove redundant iifes 2026-05-08 23:08:47 +02:00
extensions.js feat: add extension import preview 2026-05-08 22:26:53 +02:00
hospitalCourse.js feat: add patient education handouts 2026-05-08 22:26:53 +02:00
learningHub.js extract learning hub ai panel controller 2026-05-08 16:54:48 +02:00
liveEncounter.js fix docs toc fallback and remove redundant iifes 2026-05-08 23:08:47 +02:00
memories.js clarify template-only AI memory context 2026-05-08 07:38:27 +02:00
milestones.js test clinical note entrypoints 2026-05-08 06:33:34 +02:00
milestonesData.js v4: Fix milestones display + add OpenID auth + 100MB PDF support 2026-04-01 17:59:51 +00:00
nextcloud.js convert settings loaders to modules 2026-05-08 07:17:29 +02:00
notes.js remove redundant module wrappers 2026-05-08 05:30:32 +02:00
peGuide.js move pe guide data to json 2026-05-08 08:56:21 +02:00
secureStorage.js convert auth helpers to modules 2026-05-08 07:56:41 +02:00
shadess.js harden clinical assistant source handling 2026-05-09 19:59:04 +02:00
sickVisit.js feat: add patient education handouts 2026-05-08 22:26:53 +02:00
soap.js feat: add patient education handouts 2026-05-08 22:26:53 +02:00
speechRecognition.js convert speech helpers to modules 2026-05-08 08:09:38 +02:00
transcriptionSettings.js convert settings helpers to modules 2026-05-08 07:54:08 +02:00
ui-state.js convert settings helpers to modules 2026-05-08 07:54:08 +02:00
voiceDictation.js fix docs toc fallback and remove redundant iifes 2026-05-08 23:08:47 +02:00
voicePreferences.js convert settings helpers to modules 2026-05-08 07:54:08 +02:00
wellVisit.js remove redundant module wrappers 2026-05-08 05:30:32 +02:00