Authentication
Authentication handled by better-auth, hardened against brute-force and credential stuffing.
- Mandatory email verification — no password session is opened until the address is confirmed; the link is re-issued automatically when an unverified account signs in.
- Enterprise SSO — Google and Microsoft Entra ID (OAuth 2.0), with configurable tenant ID.
- Password policy — 12 to 128 characters mixing lowercase, uppercase, digit and special character — enforced server-side, on sign-up and on reset. Client-side validation is never the authority.
- Anti-bot — Cloudflare Turnstile on sign-in, sign-up and reset; the secret key is mandatory in production.
- Database-backed rate limiting — shared across all server instances, so it cannot be bypassed: 100 req/min globally, 5/min on sign-in and sign-up, 3/h on reset and verification-email sending.