| 564 | |
| 565 | /* ----------------- Authentication Submission ----------------- */ |
| 566 | async function primeCsrfStrict() { |
| 567 | const r = await fetch('/api/auth/token.php', { credentials: 'include' }); |
| 568 | const j = await r.json().catch(() => ({})); |
| 569 | if (!r.ok || !j.csrf_token) throw new Error('CSRF missing'); |
| 570 | window.csrfToken = j.csrf_token; |
| 571 | const m = document.querySelector('meta[name="csrf-token"]'); |
| 572 | if (m) m.content = j.csrf_token; |
| 573 | } |
| 574 | |
| 575 | function toFormBody(obj) { |
| 576 | const p = new URLSearchParams(); |