Перейти к основному содержимому

Админка

Зачем нужно

Документ фиксирует, что admin является UI-слоем над доменами, а не отдельным источником бизнес-логики.

1. Принцип

Admin-консоль — это набор страниц для управления платформой. Нет собственной бизнес-логики. Каждая admin-страница вызывает API соответствующего домена напрямую.

Доступ к admin-консоли: пользователь видит раздел "Администрирование" в меню, если у него есть хотя бы один permission из группы admin-страниц (любой *.view, *.edit, *.manage из маппинга ниже). Каждая конкретная страница защищена своим permission. super_admin видит всё (wildcard *).

2. Маппинг страниц на домены

Admin-страницаДомен APIЧто делает
Дашбордагрегация из нескольких доменовМетрики: пользователи, сессии, активность
Управление пользователямиusersСписок, фильтры, редактирование, бан
Кастомные поляusersCRUD определений полей
Управление ролямиrbacCRUD ролей и permissions
Управление организациямиorganizationsСписок, карточка, статусы, owner, members, students, teams, duplicates, merge, audit
Управление плагинамиpluginsСписок, вкл/выкл, настройки
Конструктор воронкиauthНастройка auth flow
OAuth-клиентыoauth-serverCRUD OAuth-клиентов
Шаблоны уведомленийnotificationsРедактор шаблонов
Журнал аудитаnotificationsПросмотр audit_logs с фильтрами
Сервис-реестрplatformЗарегистрированные внешние сервисы экосистемы
Заявки на владениеorganizationsРассмотрение ownership claims
Приглашения (системные)organizationsВсе pending organization invitations по системе
Системные настройкиplatformМаска телефона, переключатели, default role
БрендингplatformЛоготипы, favicon, название проекта
Настройки менюplatformСтруктура сайдбара, видимость
Настройки страниц/блоковplatformВидимость страниц и блоков ЛК

3. Дашборд

Единственная страница с агрегацией. Метрики собираются из нескольких доменов:

МетрикаДоменОписание
Пользователи (total + новые за сегодня)usersCOUNT + COUNT WHERE created_at > today
Активные сессииauthCOUNT WHERE is_revoked=false AND expires_at > now
Неудачные попытки входа за 24чauditCOUNT audit_logs WHERE action='identity.login.failed' AND created_at > 24h
Pending приглашенияorganizationsCOUNT organization_invitations WHERE status IN ('created','sent')
Pending ownership claimsorganizationsCOUNT organization_ownership_claims WHERE status IN ('submitted','needs_more_info')
Возможные дубли организацийorganizationsCOUNT organizations WHERE duplicate_status='possible_duplicate'
Активные плагиныpluginsCOUNT WHERE is_enabled=true
Организации (total)organizationsCOUNT
Audit-события за сегодняauditCOUNT audit_logs WHERE created_at > today

Агрегация выполняется через единый endpoint GET /platform/stats, который собирает метрики из нескольких сервисов на стороне бэкенда.

4. Что перенесено в platform

ПодсистемаПочему platform
Системные настройки (system_settings)Конфигурация платформы, не привязана к конкретному домену
Брендинг (логотипы, favicon, projectName)Конфигурация платформы
UI-права (видимость меню, страниц, блоков)Инфраструктура UI
Навигационное меню (navigation_menus)Инфраструктура UI
Конфигурация страниц/блоков ЛКИнфраструктура UI

Таблицы ui_elements / ui_groups удаляются. Навигация управляется через navigation_menus (см. platform.md).

5. UX/UI

5.1. AdminLayout

Все admin-страницы рендерятся внутри AdminLayout:

  • Левая панель: AdminSidebar (persistent, lazy-loaded, permission-filtered)
  • Mobile: MobileBottomNav с гамбургером → overlay sidebar

Группы навигации AdminSidebar:

ГруппаПункты
DashboardОбзор (chart-bar)
ПользователиУправление, Роли, Кастомные поля (super_admin)
АвторизацияАлгоритм auth flow, OAuth-клиенты
ОрганизацииУправление, Конструктор формы заявки
НастройкиОбщие, Личный кабинет, Брендинг, Уведомления
РасширенияУправление, Загрузка

5.2. AdminDashboardPage

Страница /:lang/admin — обзорная панель.

Метрики (4 карточки в ряд):

  • Всего пользователей
  • Активных пользователей
  • Новых сегодня
  • Активных сессий

Двухколоночная сетка:

  • Левая: "Последние регистрации" — таблица (аватар, имя, email, дата), 5 последних
  • Правая: "Последние события" — таблица (событие, плагин, статус Badge зелёный/красный, дата), пагинация по 6

5.3. UsersManagementPage

Страница /:lang/admin/users — управление пользователями.

  • UserSegmentsBar — табы-сегменты: Все, Активные, Заблокированные и др.
  • UserFiltersPanel — боковая панель фильтров: поиск, роли, статус
  • UsersTable — таблица данных с ColumnSettings (выбор видимых колонок)
  • UsersPagination — пагинация

UserDetailPanel (slide-in справа):

ТабСодержимое
ИнформацияПоля профиля пользователя
РолиНазначение ролей
АктивностьЛог действий

5.4. RolesManagementPage

Страница /:lang/admin/roles — роли и права.

  • RoleTreeSimple — иерархический список ролей (дерево)
  • RoleModal — создание/редактирование роли
  • PermissionBuilder — визуальный конструктор наборов прав
  • RolesControl / RolesSelector — выбор ролей для назначения

5.5. AuthFlowBuilderPage

Страница /:lang/admin/auth-flow — визуальный конструктор auth flow.

  • Список шагов с drag-and-drop для изменения порядка
  • Каждый шаг: название + тип + обязательность (Switch)
  • StepSettingsModal — настройки конкретного шага
  • AddAuthMethodModal — добавление нового метода аутентификации
  • Превью: как будет выглядеть flow для пользователя

5.6. AccountSettingsPage

Страница /:lang/admin/account-settings — настройка личного кабинета пользователя.

4 таба:

ТабКомпонентЧто настраивает
СтраницыPagesConfigManagerКакие страницы существуют (dashboard, data, security, family)
МенюMenuItemsManagerПункты sidebar (название, иконка, путь, тип: default/iframe/embedded/plugin/external)
ВиджетыProfileBlocksManagerВидимость и порядок блоков на дашборде
БлокиPageBlocksManagerПод-блоки внутри страниц

5.7. Остальные admin-страницы

СтраницаПутьОписание
GeneralSettingsPage/admin/general-settingsОбщие настройки: язык, регистрация вкл/выкл
LogoManagementPage/admin/logoBrandingUpdater: загрузка логотипа, название проекта
UserCustomFieldsPage/admin/user-custom-fieldsОпределение кастомных полей профиля (super_admin)
OAuthClientsManagementPage/admin/oauth-clientsРегистрация и управление OAuth 2.0 клиентами
NotificationTemplatesPage/admin/notification-templatesДва таба: шаблоны уведомлений (TemplateEditorModal) + email-лейауты (LayoutEditorModal) + VariableChip для подстановки переменных
ExtensionsManagerPage/admin/extensionsСписок плагинов, включение/выключение
ExtensionUploadPage/admin/extensions/uploadЗагрузка нового пакета расширения

5.8. Редиректы маршрутов

Старый путьНовый путь
/admin/menu-settings/admin/account-settings
/admin/profile-blocks/admin/account-settings
/admin/backup/admin/general-settings
/admin/organization-applications/admin/companies