Поток аутентификации¶
Saga использует двойную auth-схему: Supabase подтверждает пользователя, backend выдаёт собственный JWT для API.
Шаги¶
- Пользователь входит через Google OAuth, email/password или magic link.
- Frontend получает Supabase session.
- Frontend вызывает
/api/auth/supabase/login. - Backend проверяет Supabase JWT через JWKS.
- Backend создаёт Saga JWT с user/admin claims.
- Frontend отправляет Saga JWT в
Authorization: Bearer ....
Инварианты¶
- Email обязателен и является основным идентификатором пользователя.
- Wallet-based login не используется.
- Admin-доступ проверяется backend claims, а не состоянием UI.
- Истечение токена должно приводить к явной ошибке авторизации.
Проверки¶
- Backend JWT валиден через
make jwt-validate TOKEN=.... - User API и admin API тестируются раздельно.
- E2E тесты не используют хардкод токены.