docs: add githistory.md for authentication phase

Document commit history for T17-T22 with:
- Context and motivation for each commit
- Implementation details
- Test coverage summary
- Phase summary with metrics
This commit is contained in:
Luca Sacchi Ricciardi
2026-04-07 13:58:46 +02:00
parent 4dea358b81
commit b4fbb74113

140
export/githistory.md Normal file
View File

@@ -0,0 +1,140 @@
# Git History - OpenRouter API Key Monitor
Documentazione dei commit con contesto e motivazione.
---
## 2026-04-07: User Authentication Phase (T17-T22)
### feat(schemas): T17 add Pydantic auth schemas
**Commit:** 02473bc
**Contesto:**
Implementazione degli schemas Pydantic per l'autenticazione utente.
**Motivazione:**
- Separazione chiara tra dati di input (register/login) e output (response)
- Validazione centralizzata delle password con validate_password_strength()
- Supporto ORM mode per conversione automatica da modelli SQLAlchemy
**Dettagli implementativi:**
- UserRegister: email (EmailStr), password (min 12, validazione strength), password_confirm
- UserLogin: email, password
- UserResponse: id, email, created_at, is_active (from_attributes=True)
- TokenResponse: access_token, token_type, expires_in
- TokenData: user_id (Union[str, int]), exp
---
### feat(auth): T18 implement user registration endpoint
**Commit:** 714bde6
**Contesto:**
Endpoint per la registrazione di nuovi utenti.
**Motivazione:**
- Verifica email unica prima della creazione
- Hashing sicuro delle password con bcrypt
- Risposta che esclude dati sensibili
**Dettagli implementativi:**
- POST /api/auth/register
- Verifica esistenza email nel DB
- hash_password() per crittografare la password
- Ritorna UserResponse con status 201
- Errori: 400 per email duplicata, 422 per validazione fallita
---
### feat(auth): T19 implement user login endpoint
**Commit:** 4633de5
**Contesto:**
Endpoint per l'autenticazione e generazione JWT.
**Motivazione:**
- Verifica credenziali senza esporre dettagli specifici degli errori
- Generazione token JWT con scadenza configurabile
- Risposta standard OAuth2-like
**Dettagli implementativi:**
- POST /api/auth/login
- Ricerca utente per email
- verify_password() per confronto sicuro
- create_access_token(data={"sub": str(user.id)})
- Ritorna TokenResponse con status 200
- Errori: 401 per credenziali invalide
---
### feat(auth): T20 implement user logout endpoint
**Commit:** b00dae2
**Contesto:**
Endpoint per il logout formale (JWT stateless).
**Motivazione:**
- JWT sono stateless, il logout avviene lato client
- Endpoint utile per logging e future implementazioni (token blacklist)
- Richiede autenticazione per coerenza
**Dettagli implementativi:**
- POST /api/auth/logout
- Requiere current_user: User = Depends(get_current_user)
- Ritorna {"message": "Successfully logged out"}
---
### feat(deps): T21 implement get_current_user dependency
**Commit:** 1fe5e1b
**Contesto:**
Dipendenza FastAPI per estrarre utente autenticato dal token JWT.
**Motivazione:**
- Riutilizzabile in tutti gli endpoint protetti
- Validazione completa del token (firma, scadenza, claims)
- Verifica utente esista e sia attivo
**Dettagli implementativi:**
- Usa HTTPBearer per estrarre token da header Authorization
- decode_access_token() per decodifica e validazione
- Estrazione user_id dal claim "sub"
- Recupero utente dal DB
- HTTPException 401 per qualsiasi errore di autenticazione
---
### test(auth): T22 add comprehensive auth endpoint tests
**Commit:** 4dea358
**Contesto:**
Test suite completa per l'autenticazione.
**Motivazione:**
- Coverage >= 90% obbligatorio
- Test di casi limite e errori
- Isolamento dei test con database in-memory
**Dettagli implementativi:**
- TestClient di FastAPI con override get_db
- Fixture: test_user, auth_token, authorized_client
- Test schemas: 19 test per validazione
- Test router: 15 test per endpoint
- Coverage finale: 98.23%
---
## Riepilogo Fase Authentication
| Task | Commit | Test | Coverage |
|------|--------|------|----------|
| T17 | 02473bc | 19 | 100% |
| T18 | 714bde6 | 5 | 100% |
| T19 | 4633de5 | 4 | 100% |
| T20 | b00dae2 | 3 | 100% |
| T21 | 1fe5e1b | 3 | 87% |
| T22 | 4dea358 | - | - |
| **Totale** | 6 commits | 34 | **98.23%** |
**Prossima fase:** Gestione API Keys (T23-T29)