Документация админки

This commit is contained in:
Халимов Рустам
2026-03-27 15:48:09 +03:00
parent 11f2b232a3
commit 28fb8c25de
+24 -24
View File
@@ -4,11 +4,18 @@
## Обзор архитектуры ## Обзор архитектуры
Модуль построен на принципах чистой архитектуры и использует паттерн CQRS (через MediatR). Он взаимодействует с другими модулями системы для реализации сквозной функциональности, такой как полное удаление данных пользователя. Модуль построен на принципах чистой архитектуры и использует паттерн CQRS (через MediatR).
### Связь с модулем Settings
**Важное изменение:** Модуль Admin больше не является владельцем (Owner) системных настроек. Все настройки вынесены в отдельный инфраструктурный модуль **Settings**.
* **Чтение настроек:** Модуль Admin использует интерфейс `ISystemSettings` для получения актуальной конфигурации.
* **Изменение настроек:** Команды обновления настроек в Admin-панели делегируют выполнение соответствующим сервисам модуля Settings. Это позволяет другим модулям (Auth, Stories, Profiles) зависеть только от модуля Settings, не создавая циклической зависимости от Admin-модуля.
---
## Глобальные настройки системы ## Глобальные настройки системы
Настройки разделены на логические блоки для упрощения управления и соблюдения принципа разделения ответственности (ISP). Настройки управляются централизованно через модуль Settings и разделены на логические блоки:
### 1. Системные настройки (System) ### 1. Системные настройки (System)
* **DomainUrl**: Базовый URL домена сервера. * **DomainUrl**: Базовый URL домена сервера.
@@ -28,50 +35,43 @@
* **EnableFolders**: Включить функционал папок для группировки чатов. * **EnableFolders**: Включить функционал папок для группировки чатов.
### 4. Настройки сообщений (Messages) ### 4. Настройки сообщений (Messages)
Администратор может гибко управлять правами пользователей на работу с контентом:
* **AllowPolls**: Разрешить создание опросов (аналог Telegram). * **AllowPolls**: Разрешить создание опросов (аналог Telegram).
* **AllowMedia**: Разрешить отправку файлов/фото/видео. * **AllowMedia**: Разрешить отправку файлов/фото/видео.
* **AllowVoiceMessages**: Разрешить отправку голосовых сообщений. * **AllowVoiceMessages**: Разрешить отправку голосовых сообщений.
* **AllowForwarding**: Разрешить пересылку сообщений в другие чаты. * **AllowForwarding**: Разрешить пересылку сообщений в другие чаты.
* **AllowReplies**: Разрешить ответы на сообщения. * **ForbidCopying**: Запрет копирования текста и сохранения медиафайлов.
* **AllowQuoting**: Разрешить цитирование текста.
* **AllowPinning**: Разрешить закрепление сообщений в чатах.
* **AllowMessageDeletion**: Разрешить удаление сообщений.
* **ForbidCopying**: При включении запрещает копирование текста и сохранение медиафайлов из чатов.
* **AllowLinks**: Разрешить вставку активных гиперссылок.
* **MaxMediaSizeBytes**: Глобальный лимит на размер вложения. * **MaxMediaSizeBytes**: Глобальный лимит на размер вложения.
### 5. Настройки WebRTC (Голос/Видео) ### 5. Настройки WebRTC (Голос/Видео)
* **Enabled**: Общий переключатель звонков. * **Enabled**: Общий переключатель звонков.
* **Voice/Video Calls**: Разрешить аудио и видео звонки отдельно. * **Voice/Video Calls**: Разрешить аудио и видео звонки отдельно.
* **ScreenSharing**: Разрешить демонстрацию экрана. * **ScreenSharing**: Разрешить демонстрацию экрана.
* **TURN Configuration**: IP, логин и пароль для TURN-сервера (необходим для обхода NAT). * **TURN Configuration**: Данные для TURN-сервера (IP, логин, пароль).
### 6. Интеграция Klipy ### 6. Интеграция Klipy
* **Enabled**: Включить сервис GIF и стикеров Klipy. * **Enabled**: Включить сервис GIF и стикеров Klipy.
* **AppName / Token**: Параметры аутентификации в API Klipy. * **AppName / Token**: Параметры аутентификации в API Klipy.
### 7. Федерация (Confederation) ### 7. Федерация (Confederation)
* **Enabled**: Позволяет серверу взаимодействовать с другими серверами мессенджера. * **Enabled**: Позволяет серверу взаимодействовать с другими серверами.
* **ServerDescription**: Описание сервера. **Валидация: от 20 до 120 символов.** * **ServerDescription**: Описание сервера (20-120 символов).
* **AllowedDomains**: Список доверенных доменов для обмена сообщениями. * **AllowedDomains**: Список доверенных доменов.
--- ---
## Административные команды ## Административные команды
### Полное удаление пользователя ([DeleteUserCommand](file:///e:/GIT/forkmessager/backend/src/Modules/Conversations/Application/Users/Commands/DeleteUser/DeleteUserCommand.cs#13-14)) ### Модерация пользователей
Операция, гарантирующая удаление персональных данных: * **Полное удаление пользователя**: Операция, инициирующая каскадное удаление данных во всех модулях (Auth, Conversations, Profiles, Storage).
1. **Очистка сообщений**: Удаляются сообщения пользователя из MongoDB. * **Сброс пароля**: Позволяет администратору принудительно изменить пароль любого пользователя.
2. **Очистка файлов**: Система проверяет вложения. Файл удаляется из S3, если на него нет ссылок в других чатах. * **Блокировка (Ban)**: Ограничение доступа пользователя к системе.
3. **Очистка профиля**: Удаление из PostgreSQL (Auth и Conversations).
### Сброс пароля (`ResetUserPasswordCommand`)
Позволяет администратору принудительно изменить пароль любого пользователя.
--- ---
## API Эндпоинты ## API Эндпоинты
* `GET /api/admin/settings` — Получение текущих настроек. Все запросы требуют прав администратора (`AdminPolicy`).
* `PUT /api/admin/settings` — Обновление конфигурации.
* `DELETE /api/admin/users/{userId}` — Полное удаление пользователя. * `GET /api/admin/settings` — Получение текущих настроек (через модуль Settings).
* `PUT /api/admin/settings` — Обновление конфигурации (делегируется модулю Settings).
* `DELETE /api/admin/users/{userId}` — Полное удаление пользователя и его контента.
* `POST /api/admin/users/{userId}/reset-password` — Сброс пароля.