1.9 KiB
logic_spec_auth_debug.md — Auth Debug Deep Dive
Modul Célja
Az auth végpontok (forgot-password, login) hibakezelésének debug-javítása. Az initiate_password_reset már dob kivételeket (inaktív user esetén HTTPException, email hiba esetén 500), de a végpont ezeket némán elnyeli. A login végpont pedig nem ismeri fel az inaktív fiókot.
Érintett Fájlok
| Fájl | Szerep |
|---|---|
backend/app/api/v1/endpoints/auth.py |
API végpontok (forgot-password, login) |
backend/app/services/auth_service.py |
Üzleti logika (initiate_password_reset, authenticate) |
backend/app/services/email_manager.py |
Email küldés Brevo API-n / SMTP-n keresztül |
1. Beavatkozás: Forgot-Password Anti-Enumeration Debug
Jelenlegi állapot
Az auth.py:114-125 végpont initiate_password_reset-et hív, de a visszatérési értéket teljesen figyelmen kívül hagyja. Mindig ugyanazt a generikus választ adja.
Az auth_service.py:347-388 initiate_password_reset:
- Ha nincs user: return "not_found"
- Ha user inaktív: raise HTTPException(400, "AUTH.USER_INACTIVE")
- Ha email hiba: raise HTTPException(500, "Email küldési hiba: ...")
- Siker esetén: return "success"
Módosítás
A result változó ellenőrzése. Ha "not_found", dobjon HTTPException-t.
2. Beavatkozás: Login Inaktív Fiók Felismerése
Jelenlegi állapot
Az auth.py:32-81 login végpont AuthService.authenticate-et hív, ami csak email+jelszó párost ellenőriz, is_active-ot NEM. Inaktív user esetén is visszaküldi a tokent "is_active": false-cal.
Módosítás
Token generálás ELŐTT ellenőrizni a user.is_active flag-et. Ha False, dobjon explicit HTTPException(400, "AUTH.USER_INACTIVE")-t.
3. Élő Diagnosztika
Parancsok
- curl POST a forgot-password végpontra
- Docker logok:
docker compose logs --tail 100 sf_api
Kockázatok
- Anti-enumeration gyengítése biztonsági rés lehet debug időszakban