2.6 KiB
2.6 KiB
ADR-004: Стратегия авторизации и профилей - GitHub-only + PAT (+ Device Flow позже)
Дата: 2026-09-06 Статус: Принято (MVP) / Запроектировано (Phase 2)
Контекст
Каталог open-source модов где 1 мод = 1 GitHub репо. Нужна минимальная, безопасная авторизация без паролей, но с поддержкой CLI/лаунчеров (Prism) и будущих Discord/коллекций. Пользователь предложил: GitHub App, PAT, Device Flow, Discord синк, дашборды, коллекции, геймификацию, SVG виджет.
Решение
MVP:
- Вход только GitHub OAuth (
read:user,user:email), JWT httpOnly cookie, без паролей. Читатели - anonymous. - PAT с
SHA256хранением и скоупамиread:mods|write:mods|webhooks:manageдля CI/лаунчеров. verifiedбейдж если репо публичное + лицензия + GitHub App установлен.- Sponsors (GitHub/Patreon/Ko-fi) + star/follow (in-app) + SVG badges (
/v1/badges/:slug/downloads.svg).
Phase 2 (спроектировано, не кодим сейчас):
- Device Code Flow (RFC 8628) - Indexium как OAuth2 Provider для лаунчеров (
/oauth/device/code→/activate). - Discord linked_account + бот роли
Verified Modder. - Collections/Modlists с экспортом Prism/packwiz, Activity Feed, аналитика по версиям/лоадерам, PGP проверка.
Backlog: краш-логи, лидерборды, Profile README.
Альтернативы
- Google/email логин - отклонён для MVP (публикация всё равно требует GitHub, лишняя сложность).
- Сразу Device Flow - отклонён ( +2 недели, PAT покрывает 80% кейсов).
- Discord как логин - отклонён (только linked).
Последствия
- Плюс: минимум GDPR, нет паролей, доказуемое владение репо, CLI готов через PAT.
- Минус: без GitHub аккаунта не опубликовать (осознанно, соответствует open-source философии).
- Миграция: таблицы
personal_access_tokens,linked_accounts,oauth_clients/device_codesдобавятся без breaking change.
Ссылки
docs/auth-profiles.md§7-10docs/catalog-philosophy.mddocs/api-spec.md§Auth/Profiles