feat(profile): редактирование персональных данных и смена пароля
Бэкенд: - PATCH /auth/me — изменение имени и/или email. Смена email проверяет уникальность, сбрасывает is_verified и отправляет новое письмо подтверждения. Пользователь перезагружается из БД (объект из Redis-кэша не привязан к сессии), кэш инвалидируется после изменения. - POST /auth/change-password — смена пароля с подтверждением текущего; отклоняет неверный текущий и совпадение нового со старым. Фронтенд: - Страница /settings: карточка персональных данных (имя, email со статусом подтверждения и предупреждением о повторной верификации) и карточка смены пароля с проверкой совпадения. - Ссылка «Настройки» в карточке профиля кабинета, методы API-клиента. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,20 @@ class LoginRequest(BaseModel):
|
||||
password: str
|
||||
|
||||
|
||||
class UpdateProfileRequest(BaseModel):
|
||||
"""Изменение персональных данных (имя и/или email)."""
|
||||
|
||||
name: str | None = Field(default=None, min_length=1, max_length=255)
|
||||
email: EmailStr | None = None
|
||||
|
||||
|
||||
class ChangePasswordRequest(BaseModel):
|
||||
"""Смена пароля: нужен текущий пароль для подтверждения."""
|
||||
|
||||
current_password: str
|
||||
new_password: str = Field(min_length=8, max_length=128)
|
||||
|
||||
|
||||
class UserInToken(BaseModel):
|
||||
"""Минимальная информация о пользователе в JWT токене."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user