Backend / REST API
API: Пользователи
Управление личными данными, приватностью, списком чатов и поиском. Префикс: /users. Файл: srv/app/api/endpoints/users.py
Эндпоинты профиля
| Метод | Путь | Описание |
|---|---|---|
| GET | /users/me | Получить профиль текущего пользователя |
| PUT | /users/me | Обновить профиль (имя, телефон, о себе) |
| PUT | /users/me/encryption-key | Обновить резервную копию приватного ключа E2EE |
| PUT | /users/me/password | Изменить пароль аккаунта |
| PUT | /users/me/privacy | Обновить настройки конфиденциальности |
| GET | /users/me/privacy | Получить текущие настройки приватности |
| PUT | /users/me/avatar | Установить UUID аватарки в БД |
Поиск и чаты
| Метод | Путь | Описание |
|---|---|---|
| GET | /users/all | Список всех пользователей системы (с поиском по query) |
| GET | /users/chats | Список активных диалогов (с последними сообщениями) |
| GET | /users/by-username/{username} | Поиск профиля по точному логину |
| GET | /users/{user_id} | Получить профиль по числовому ID |
Настройки конфиденциальности
Пользователи могут управлять видимостью своих личных данных (email, phone, avatar, about, last_online) для других участников чата. Для проверки видимости бэкенд сверяет флаги приватности в таблице users:
show_email(1/0) — показывать emailshow_phone(1/0) — показывать номер телефонаshow_avatar(1/0) — показывать аватарshow_about(1/0) — показывать информацию "О себе"show_last_online(1/0) — показывать статус последней активности
Супер-администратор (user_id = 1) всегда видит все поля пользователей, независимо от их настроек приватности.
Диалоги пользователя (GET /users/chats)
Эндпоинт /users/chats собирает данные о диалогах. Для каждого собеседника рассчитывается:
- Последнее отправленное сообщение (
last_message) и его тип (текст, картинка, файл и др.). - Количество непрочитанных входящих сообщений (
unread_count) от этого собеседника. - Текущий статус в сети (
online) через проверку в WebSocket менеджере.
Список сортируется по времени последнего сообщения в порядке убывания.