Перейти к содержанию

0011 — Административный dashboard и ручная активация

  • Дата: 2026-08-21.
  • Статус: Принято; дополняет решения 0009 и 0010.
  • Ответственный: владелец проекта.

Контекст

Обычному пользователю требуется личный кабинет, а платформенным администраторам — отдельный dashboard. Владелец проекта определил начальные разделы dashboard для управления администраторами и пользователями и разрешил super_admin вручную подтверждать пользователя без перехода по ссылке из email.

Решение

Разделение интерфейсов

  • /settings остаётся личным кабинетом текущего пользователя.
  • /admin является отдельным dashboard для платформенных ролей super_admin и platform_admin.
  • Состав меню и доступные действия внутри /admin формируются по эффективным правам роли.
  • Административный dashboard расширяется постепенно вместе с появлением подтверждённых функций проекта.

Раздел «Администраторы»

  • super_admin видит в меню /admin отдельный раздел «Администраторы».
  • Раздел представляет пользователей с платформенной ролью platform_admin, а не отдельную дублирующую таблицу учётных записей.
  • super_admin может назначить и отозвать platform_admin, изменить его email и статус, сменить ему пароль, деактивировать и удалить из интерфейса.
  • Логином администратора остаётся email; отдельный username пока не вводится.
  • Текущий пароль никогда не отображается. Действие «Сменить пароль» задаёт новый пароль, отзывает прежние сессии и не раскрывает старый пароль или password hash.
  • «Удалить администратора» означает деактивировать и архивировать запись. Необратимое физическое удаление требует отдельного решения о retention и аудите.
  • Защита super_admin, принятая решением 0010, сохраняется: platform_admin не может изменить, деактивировать, удалить или переназначить super_admin.

Раздел «Пользователи»

  • super_admin видит в меню /admin отдельный раздел «Пользователи».
  • В начальном составе super_admin может изменить email и доступные поля пользователя, активировать, деактивировать и удалить пользователя из интерфейса.
  • «Удалить пользователя» означает деактивировать и архивировать запись с сохранением обязательного аудита; hard delete пока не разрешён.
  • Деактивация немедленно блокирует новый вход и защищённые API-действия и отзывает активные сессии.
  • super_admin может вручную подтвердить пользователя без перехода по ссылке из email отдельным действием «Подтвердить без email».

Ручное подтверждение без email

  • Действие доступно только super_admin; platform_admin не получает это право автоматически.
  • Ручное подтверждение считается исключением из обычного email-verification flow решения 0009.
  • До ручного подтверждения организация и membership самостоятельной регистрации не создаются. После действия пользователь получает статус подтверждённого и проходит тот же /onboarding/organization, что после обычного подтверждения email; tenant-контекст создаётся только после отправки формы по решению 0024.
  • Система сохраняет способ подтверждения super_admin_manual, идентификатор инициатора, время и обязательную причину; событие записывается в аудит.
  • Интерфейс предупреждает, что владение email фактически не проверено.
  • Ручное подтверждение не должно незаметно отправлять письмо или добавлять дополнительные персональные данные.

Последствия

  • Для identity-модели требуется различать email_verified_at и способ подтверждения email.
  • Все изменения email, ролей, статусов и паролей выполняются только через серверные команды с проверкой роли и аудитом.
  • Смена email не должна автоматически считаться подтверждённой, кроме отдельного явного ручного действия super_admin.
  • Архивированный пользователь или администратор не может войти, но его идентификатор сохраняется для ссылочной целостности и аудита.
  • Новые административные разделы не добавляются автоматически: вместе с каждой функцией фиксируются разрешённые роли и операции.
  • Backend, таблицы и реальные административные действия этим решением не реализуются до действующего product gate.

Отложенные вопросы

  • Может ли platform_admin назначать и удалять других platform_admin; текущее правило полного доступа решения 0010 это допускает, но отдельная иерархия ещё не подтверждена.
  • Точный UX смены пароля администратором: новый временный пароль или одноразовая ссылка после выбора email-провайдера.
  • Уведомления пользователю об административной смене email, пароля, статуса или способа подтверждения.
  • Retention и условия физического удаления архивированных пользователей.
  • Фильтры, поиск, пагинация, массовые операции и экспорт в административных разделах.
  • Следующие сущности и виджеты административного dashboard.

Откат или замена

Отмена ручного подтверждения без email или изменение круга ролей, которым оно доступно, требует нового решения. Появление новых разделов dashboard оформляется расширением матрицы прав и не меняет автоматически существующие роли.