Files
BagExchange/docs/todo-auth.md
2026-02-15 17:09:19 +01:00

2.6 KiB

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.