code created by GPT-5.3-Codex
This commit is contained in:
47
docs/todo-auth.md
Normal file
47
docs/todo-auth.md
Normal 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.
|
||||
Reference in New Issue
Block a user