fix(auth): сбрасывать Redis-кэш пользователя после подтверждения email
get_current_user кэширует пользователя в Redis на 5 минут. verify_email не сбрасывал этот кэш после user.is_verified = True — если пользователь до подтверждения хотя бы раз дёрнул защищённый эндпоинт (закешировался как неверифицированный), он получал "Необходимо подтвердить email адрес" ещё до 5 минут после реального подтверждения по ссылке из письма.
This commit is contained in:
@@ -12,6 +12,7 @@ from app.core.security import (
|
|||||||
create_access_token,
|
create_access_token,
|
||||||
get_current_user,
|
get_current_user,
|
||||||
hash_password,
|
hash_password,
|
||||||
|
invalidate_user_cache,
|
||||||
verify_password,
|
verify_password,
|
||||||
)
|
)
|
||||||
from app.database import get_db
|
from app.database import get_db
|
||||||
@@ -146,5 +147,6 @@ async def verify_email(token: str, db: AsyncSession = Depends(get_db)) -> dict:
|
|||||||
user.is_verified = True
|
user.is_verified = True
|
||||||
user.verification_token = None
|
user.verification_token = None
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
await invalidate_user_cache(user.id)
|
||||||
|
|
||||||
return {"message": "Email успешно подтверждён"}
|
return {"message": "Email успешно подтверждён"}
|
||||||
|
|||||||
Reference in New Issue
Block a user