2026.06.05 frontend javítgatás és új belépési logika megvalósítva
This commit is contained in:
43
plans/logic_spec_auth_debug.md
Normal file
43
plans/logic_spec_auth_debug.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# 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
|
||||
1. curl POST a forgot-password végpontra
|
||||
2. Docker logok: `docker compose logs --tail 100 sf_api`
|
||||
|
||||
## Kockázatok
|
||||
- Anti-enumeration gyengítése biztonsági rés lehet debug időszakban
|
||||
Reference in New Issue
Block a user