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