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

0017 — Первичная учётная запись SuperAdmin

  • Дата: 2026-08-22.
  • Статус: Принято пользователем подготовкой отдельного secret-файла.
  • Ответственный: владелец проекта.

Контекст

Перед снятием общего Basic Auth с product DEV в базе не было ни одного пользователя. Gmail delivery ещё зависит от открытия исходящего порта 587, поэтому обычная регистрация не могла гарантированно создать первый доступный административный аккаунт. Повторное использование Basic Auth credentials как пароля приложения запрещено.

Решение

  • Первый super_admin создаётся одноразовой операторской командой через Better Auth и PostgreSQL.
  • Email и уникальный пароль поступают только из внешнего config_skuaro_SuperAdmin.env с режимом 600; значения не копируются в Git, runtime .env, документацию или логи.
  • Пароль проверяется общей политикой SKUARO и хешируется Better Auth. Исходное значение не сохраняется приложением.
  • Bootstrap использует memory email sender, не отправляет письмо, а затем помечает только созданную им запись как emailVerified=true, status=active, platformRole=super_admin.
  • Команда отказывается работать, если email уже принадлежит другому пользователю или существует другой super_admin.
  • Повтор с тем же уже активным подтверждённым SuperAdmin идемпотентно возвращает already_exists и не меняет пароль.
  • Bootstrap не создаёт Organization или Membership: глобальной платформенной роли они не требуются.
  • Временная копия secret-файла на тестовом сервере удаляется сразу после проверки результата; каноническая копия остаётся во внешнем хранилище владельца.

Граница применения

Решение относится только к первичной инициализации пустого DEV-контура. Оно не определяет будущую штатную процедуру назначения или отзыва super_admin, MFA, повторное подтверждение критических операций и административный аудит; эти вопросы остаются открытыми.

Проверки

  • Integration-тест создаёт первый SuperAdmin, проверяет active, подтверждённый email и роль, затем проверяет идемпотентный повтор.
  • Реальный DEV bootstrap выполняется только после успешного полного check и до снятия общего Basic Auth.
  • После bootstrap проверяются ровно одна роль super_admin, отсутствие вывода credential и успешный login/access flow.

Статус применения

Применено в DEV 2026-08-22. Bootstrap создал первую активную подтверждённую учётную запись super_admin; login/access вернул роль super_admin и capabilities all, проверочная сессия отозвана. Временные server-файлы удалены, значения credential не выводились.

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

До снятия Basic Auth неуспешный bootstrap не изменяет ingress. После успешного перехода откат приложения возвращает прежние DEV images и общий Basic Auth; удаление созданного аккаунта автоматически не выполняется.