code created by GPT-5.3-Codex

This commit is contained in:
Fuzzy Book
2026-02-15 17:09:19 +01:00
parent c30f8cd020
commit 48c0bec24e
20 changed files with 2771 additions and 0 deletions

47
docs/todo-auth.md Normal file
View File

@@ -0,0 +1,47 @@
# TODO - Prossimi Passi Auth
## 1. Iscrizione al servizio
- [ ] Definire modello `users` in SQLite (`id`, `email`, `password_hash`, `email_verified`, `created_at`, `updated_at`).
- [ ] Creare endpoint `POST /api/auth/register` con validazione input (email, password forte).
- [ ] Hash password con Argon2id o bcrypt (mai salvare password in chiaro).
- [ ] Bloccare email duplicate con vincolo `UNIQUE` e gestione errore chiara.
- [ ] Aggiungere form UI registrazione (email, password, conferma password, accettazione termini).
- [ ] Mostrare messaggi UX chiari (successo/errore/utente gia registrato).
- [ ] Preparare invio email verifica account (token con scadenza).
## 2. Login
- [ ] Creare endpoint `POST /api/auth/login`.
- [ ] Verificare credenziali in modo sicuro (confronto hash password).
- [ ] Introdurre sessione con cookie `HttpOnly` + `SameSite=Lax` (+ `Secure` in HTTPS).
- [ ] Aggiungere endpoint `POST /api/auth/logout` per invalidare sessione.
- [ ] Aggiungere endpoint `GET /api/auth/me` per stato utente autenticato.
- [ ] Costruire pagina/modal login con gestione errori (credenziali errate, account non verificato).
- [ ] Rate limit su login per mitigare brute force.
## 3. Recupero password
- [ ] Endpoint `POST /api/auth/forgot-password` (sempre risposta neutra per privacy).
- [ ] Generare token monouso con scadenza breve (es. 30-60 min).
- [ ] Salvare token hashato nel DB (`password_resets` o campi dedicati in `users`).
- [ ] Inviare email con link di reset.
- [ ] Endpoint `POST /api/auth/reset-password` con validazione token + nuova password.
- [ ] Invalidare token dopo utilizzo.
- [ ] Forzare logout da sessioni vecchie dopo reset password.
## 4. Sicurezza e compliance (trasversale)
- [ ] CSRF protection per endpoint sensibili con cookie/sessione.
- [ ] Logging minimale senza dati sensibili (no password/token in log).
- [ ] Policy password minima (lunghezza, complessita, blacklist password comuni).
- [ ] Audit su cookie e header di sicurezza (`Content-Security-Policy`, `X-Frame-Options`, `Referrer-Policy`).
- [ ] Aggiornare privacy policy per raccolta dati (IP, user-agent, email).
## 5. Testing
- [ ] Test unitari validazione auth.
- [ ] Test integrazione endpoint register/login/forgot/reset.
- [ ] Test casi limite: token scaduto, email duplicata, password debole.
- [ ] Test E2E flusso completo: registrazione -> login -> logout -> recupero password.
## 6. Delivery
- [ ] Definire variabili env (`APP_BASE_URL`, `SMTP_*`, `SESSION_SECRET`).
- [ ] Preparare migrazione DB iniziale per tabelle auth.
- [ ] Setup provider email (SMTP o API) con ambiente dev/staging/prod.
- [ ] Checklist rilascio con smoke test post-deploy.