ADR-050: Bot protection (signup)
Estado
Accepted — 2026-08-23
Amendment — 2026-08-28: Cloudflare Turnstile activo en flujos de auth públicos (paridad IVPrior ADR-043).
Decisión
V1:
- Rate limit de signup/login (ADR-049).
- Email verification antes de mailbox/send (ADR-048).
- Cloudflare Turnstile en login, signup y forgot-password (org + platform), con bypass cuando
TURNSTILE_SECRET_KEY/NEXT_PUBLIC_TURNSTILE_SITE_KEYestán vacíos oTURNSTILE_ENABLED=false.
Reset-password y accept-invite no llevan Turnstile (token de un solo uso en el enlace).
APIs de producto autenticadas: JWT, no captcha.
Implementación
| Capa | Piezas |
|---|---|
| Web | TurnstileField, useTurnstileToken, @marsidev/react-turnstile |
| API | TurnstileVerifierService, assertTurnstileVerified en identity + platform auth |
Variables: ver .env.example (TURNSTILE_SECRET_KEY, TURNSTILE_ENABLED, NEXT_PUBLIC_TURNSTILE_SITE_KEY).