feat: email-first login with allow-check and access forward

This commit is contained in:
Jonas Miederer 2026-09-12 11:20:55 +02:00
parent 82f7ff8b02
commit b533549e45
8 changed files with 224 additions and 21 deletions

View file

@ -127,6 +127,14 @@ workflows shot auto-selects `intake_form` to show the generated RJSF form.
Vite dev `server.watch` polling enabled (Windows bind-mount events often
never reach the Linux watcher → stale modules otherwise).
## 0.5 Email-first login (`POST /api/auth/magic/request`)
`/login` without `?token=` shows an email form (+ "Hier anfragen" link).
Allowed = approved user row or `ADMIN_EMAILS` (admin auto-created on first
request); anything else → 403 and the frontend forwards to
`/access?email=…` (prefilled). Rate-limited (5/hour), token by mail only,
delivery failures never 500 (see §0.4 hardening).
## 1. Locked decisions (do not re-ask)
* Auth: SMTP magic-link, 15-min single-use tokens (`secrets.token_urlsafe`,