- API и страницы профиля (редактирование, смена пароля, аватар), публичные карточки. - Сайдбар: блок пользователя, пункт Users для admin/root, исправлен порядок инициализации (показ admin-only после initAuthSession, currentUser). - GET /auth/me: ответ через ProfileMeResponse, исправлена валидация (is_founder bool). Команды и роли - Маршруты и UI команд; при редактировании роли: видимость Team, выбор команды в модалке, только команды с активным членством; API team_id в details/ update. - GET /api/v1/teams?membership=active для списка «своих» команд. - Форма роли: сегмент Team, панель выбора команды только при Team и не при с
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ProfileMeResponse(BaseModel):
|
|
id: str
|
|
username: str
|
|
email: str
|
|
full_name: str
|
|
role: str
|
|
account_group: str = "users"
|
|
is_founder: bool = False
|
|
profile_bio: str = ""
|
|
avatar_ext: str | None = None
|
|
avatar_54: str | None = None
|
|
avatar_128: str | None = None
|
|
avatar_256: str | None = None
|
|
avatar_original: str | None = None
|
|
|
|
|
|
class PublicProfileResponse(BaseModel):
|
|
id: str
|
|
username: str
|
|
full_name: str
|
|
profile_bio: str = ""
|
|
role: str = "user"
|
|
account_group: str = "users"
|
|
is_founder: bool = False
|
|
is_removed: bool = False
|
|
avatar_54: str | None = None
|
|
avatar_128: str | None = None
|
|
avatar_256: str | None = None
|
|
|
|
|
|
class ProfileUpdate(BaseModel):
|
|
full_name: str | None = Field(default=None, max_length=200)
|
|
profile_bio: str | None = Field(default=None, max_length=4000)
|
|
username: str | None = Field(default=None, max_length=80)
|
|
|
|
|
|
class ProfilePasswordChange(BaseModel):
|
|
current_password: str = Field(min_length=1, max_length=500)
|
|
new_password: str = Field(min_length=8, max_length=500)
|
|
new_password_confirm: str = Field(min_length=8, max_length=500)
|