# 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.