POST /api/site-admin/login — Вход site-admin (пароль)
Сгенерировано из матриц + кода. Правки вносить в источники (
docs/matrices/,server/routes/), не здесь.
| Поле | Значение |
|---|---|
| HTTP | POST /api/site-admin/login |
| Auth | — |
| Scope токена | read_write |
| PG-функции | api.admin_login |
| Таблицы | — |
| SRM | — (вне SRM, документировано по коду) |
| RP (права) | — |
| Файл роута | server/routes/site-admin.js |
| Статус | по коду (вне SRM) |
Аргументы запроса (best-effort из хендлера; путь-параметры опущены):
| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
email | body | подтвердить | |
password | body | подтвердить |
Коды ответов/ошибок (из хендлера): 400, 401 (+ 200) — уточнить причины вручную
Для человека
Как открыть: у платформенного администратора отдельная страница входа (не общий экран входа пользователей). На ней — поле почты, поле пароля и кнопка «Войти». Это первый из двух шагов входа в Admin Panel.
Проверяет почту и пароль администратора платформы (site-admin). Дальше развилка:
- Если у этого администратора подключена двухфакторная защита (TOTP) — вход не завершается: вы переходите на второй шаг и вводите одноразовый код. Подтверждение кода — verify-totp.
- Если TOTP не настроен — сессия открывается сразу, и вы попадаете в панель.
Пароль вводите вручную; на экране он скрыт. При неверной паре «почта + пароль» система отвечает общей ошибкой «Неверные учётные данные» (401) — без подсказки, что именно не сошлось. Если не заполнить почту или пароль — 400.
Кто может. Только администратор платформы со своей учётной записью. У обычных ролей (сотрудник, менеджер спейса, наблюдатель, администратор организации, гость) этой страницы и доступа к ней нет.
Для агента
Это операция site-admin, и она недоступна API-токену ни на каком scope. Вход в панель администратора платформы — исключительно человеческий поток через браузер: пароль плюс одноразовый код TOTP, защищённая cookie-сессия. Токен здесь не участвует.
Путь /api/site-admin/* закрыт для Bearer-токенов в agent-gate (server/auth/agentGate.js): он не входит ни в read-allowlist, ни в write-allowlist, а allowlist работает «закрыто по умолчанию». Любой вызов с Authorization: Bearer tak_... на этот путь возвращает 403 (Forbidden for token). Markdown-зеркала у site-admin нет.
Сам login — публичный шаг входа (без middleware, mw=-): он создаёт человеческую сессию, а не токенную. Поток показан для полноты, выполняется браузером с сохранением cookie:
# Шаг 1 — пароль. При включённом TOTP в ответе придёт tempToken для шага 2.curl -X POST https://specbuilder.vnimanie.ai/api/site-admin/login \ -c admin-cookies.txt \ -H "Content-Type: application/json" \ -d '{"email":"admin@example.com","password":"<пароль>"}'Ответ при включённом TOTP (200) — переход на второй шаг:
{ "step": "totp", "tempToken": "0e1f2a3b-..." }Ответ без TOTP (200) — сессия уже открыта, cookie admin_sid установлена:
{ "step": "done", "admin": { "id": "9c8b7a6d-...", "email": "admin@example.com" } }Дальнейший шаг при step: totp — verify-totp.