Аутентификация
CLI поддерживает несколько сценариев хранения токена с автоматическим выбором самого безопасного доступного бэкенда.
Краткая картина
| Где лежит токен | Как попадает туда | Когда это работает |
|---|---|---|
| macOS Keychain | gitflic auth login | На любом маке (бинарь security встроен) |
| Linux libsecret | gitflic auth login | Если установлен secret-tool (libsecret + GNOME Keyring / KWallet) |
| Файл с chmod 0600 | fallback | Если ничего из вышеперечисленного не нашлось — с warning в stderr |
env var GITFLIC_TOKEN | export GITFLIC_TOKEN=... в шелле | Универсально, но требует ручной настройки |
--token <flag | per-call | Для одноразовых вызовов (CI, scripts) |
Подкоманды
auth login— валидирует и сохраняет токен.auth logout— удаляет токен.auth status— показывает текущего юзера + бэкенд.auth list— все аккаунты (маскированные).auth switch— переключить активный аккаунт.auth bind— привязать проект к аккаунту.auth unbind/auth bindings— управление привязками.
Resolution chain
Когда любая команда CLI ищет токен, она проходит этот список сверху вниз:
--token <value>(per-call override).GITFLIC_TOKENenv var.account-bind:<project>— еслиflags.projectзадан (per-project override, см. Per-project bindings).token:<active-account>— еслиauth switchустановил активный аккаунт.token— legacy-ключ для default-аккаунта (еслиactive-accountне задан).- die с подсказкой:
no token. Run gitflic auth login --token <value> ....
Каждый уровень проверяется по очереди. Ничего не "проваливается" молча.
Угрозы и защита
Подробный разбор — auth/security.md. TL;DR:
| Угроза | Защита |
|---|---|
Стиллер ищет ~/.zshrc, ~/.aws/credentials, ~/.netrc | Keychain не попадает в plaintext grep |
| Бэкап диска украден | Keychain зашифрован паролем юзера (без него не расшифровать) |
| Другой юзер на маке | File mode chmod 0600, keychain — owner-only |
| Стиллер запущен от твоего юзера | Все токены утекают — это game over независимо от нас |
| Токен ушёл в scrollback / history | alias list/get маскирует sensitive значения |
Что НЕ реализовано (по сравнению с gh)
- ❌ OAuth browser flow — GitFlic OAuth-документация не подтверждена, нет смысла делать вслепую.
- ❌
git credential.helperинтеграция — отдельная UX-история, есть в планах. - ❌ TTL / auto-refresh токенов — нужна поддержка expiry в API GitFlic.
Если что-то из этого нужно — отдельным коммитом.