feat: auth/stars API, collections and publish routes, star/author migrations

This commit is contained in:
loki5512344 2026-10-04 12:47:20 +02:00
parent 43cf0e277d
commit 65820d4ef9
Signed by: boba
GPG key ID: 253067914055423B
43 changed files with 2008 additions and 408 deletions

View file

@ -1,4 +1,4 @@
# ADR-004: Стратегия авторизации и профилей — GitHub-only + PAT (+ Device Flow позже)
# ADR-004: Стратегия авторизации и профилей - GitHub-only + PAT (+ Device Flow позже)
Дата: 2026-09-06
Статус: Принято (MVP) / Запроектировано (Phase 2)
@ -9,22 +9,22 @@
## Решение
**MVP:**
- Вход только GitHub OAuth (`read:user`, `user:email`), JWT httpOnly cookie, без паролей. Читатели — anonymous.
- Вход только 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`).
- 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).
- Google/email логин - отклонён для MVP (публикация всё равно требует GitHub, лишняя сложность).
- Сразу Device Flow - отклонён ( +2 недели, PAT покрывает 80% кейсов).
- Discord как логин - отклонён (только linked).
## Последствия
- Плюс: минимум GDPR, нет паролей, доказуемое владение репо, CLI готов через PAT.