Skip to main content
failproofai auth login    # email + одноразовый код
failproofai auth logout   # отозвать текущий сеанс
failproofai auth whoami   # вывести идентификацию вошедшего пользователя
Устаревшая форма флагов --login / --logout / --whoami по-прежнему поддерживается как псевдоним для обратной совместимости. Аутентификация — добровольная. Политики, панель управления, страница /audit и все остальные локальные функции работают одинаково независимо от того, вошли ли вы в систему или нет. Экран входа существует для функций, которые требуют стабильного идентификатора (напоминания о переаудите сегодня, в будущем и больше).

Процесс входа

failproofai auth login
Запросит ваш адрес электронной почты, отправит 6-значный одноразовый код на этот адрес, запросит код, а при успехе запишет ~/.failproofai/auth.json (режим 0600). Тот же сеанс станет видимым в панели приложения — при нажатии [ set a reminder ] на /audit вы будете отображаться как вошедший в систему. Панель управления предоставляет тот же процесс в виде модального диалога на /audit для пользователей, которые никогда не используют CLI.

Выход из системы

failproofai auth logout
Отзывает текущий сеанс на сервере и удаляет ~/.failproofai/auth.json. Если api-сервер недоступен, локальный файл удаляется в любом случае — локальное намерение выйти из системы всегда имеет приоритет.

Проверка личности

failproofai auth whoami
Выводит <email> (<user uuid>) и завершает работу с кодом 0, если существует действительный сеанс, или not signed in и завершает работу с кодом 1 в противном случае. Незаметно обновляет маркер доступа в фоне, если до его истечения остаётся менее минуты.

Постоянное напоминание о переаудите

Когда вы нажимаете [ set a reminder ] на странице /audit (или входите через модальное окно, которое вскрывает кнопка), панель управления создаёт небольшой вспомогательный файл в ~/.failproofai/next-audit.json:
{
  "next_audit_at": 1780765200,
  "user_email": "you@example.com",
  "set_at": 1780160574
}
Этот файл привязан к электронной почте, для которой он был установлен — переключение сеанса CLI на другую учётную запись скроет любое напоминание, относящееся к предыдущему пользователю. Смещение по умолчанию составляет 7 дней, оно будет настраиваемым после добавления планировщика. Создаётся с разрешениями 0600, как и auth.json. Точка доступа /api/auth/reminder панели управления предоставляет GET (чтение), POST (установка / переназначение) и DELETE (очистка) и требует активный сеанс.

Содержимое ~/.failproofai/auth.json

{
  "access_token": "eyJhbGc…",
  "refresh_token": "9ede3e…",
  "access_expires_at": 1780160574,
  "refresh_expires_at": 1782748974,
  "user": { "id": "<uuid>", "email": "you@example.com" }
}
Создаётся с разрешениями 0600 (чтение/запись только для владельца). Маркер доступа — это JWT на основе HS256 с временем жизни 1 час; маркер обновления — это непрозрачная случайная строка на 256 бит, которую сервер хранит как SHA-256(token). Повторное использование маркера обновления обнаруживается на стороне сервера и отзывает все сеансы пользователя.

Переменные окружения

ПеременнаяПо умолчаниюНазначение
FAILPROOF_API_URLhttps://api.befailproof.aiПереопределить базовый URL api-сервера. Полезно для локальной разработки с самостоятельно размещённым api-сервером.
FAILPROOFAI_AUTH_DIR~/.failproofaiПереопределить, где хранится auth.json. В основном для тестов.
Полный список см. в разделе Переменные окружения.

Устранение неполадок

“Could not reach the api-server” — CLI не может открыть TCP-соединение с FAILPROOF_API_URL. Проверьте сетевое соединение или установите FAILPROOF_API_URL, если вы используете самостоятельно размещённый api-сервер. “Rate limited” — слишком много попыток входа в 15-минутном окне для этой электронной почты (5 на адрес) или IP (20 на IP), либо 30-секундный период ограничения повторной отправки после предыдущего запроса для той же электронной почты. Сообщение об ошибке включает интервал повтора в секундах. Code rejected — OTP неверен, истёк срок действия или достигнут лимит из 5 неправильных попыток. Запустите failproofai auth login снова, чтобы запросить новый код.