Перейти к основному содержимому

Потоки аутентификации


Email + Password

POST /auth/sign_up  →  User + Profile создаются
→ JWT access_token (15 мин) + refresh_token (30 дней)

POST /auth/sign_in → bcrypt проверка пароля
→ JWT access_token + refresh_token

POST /auth/refresh → refresh_token → новая пара токенов

Google OAuth (реализован)

Мобильное приложение

├─ 1. Google Sign-In SDK → id_token

└─ 2. POST /api/v1/auth/oauth/google { id_token }

├─ Запрос к Google tokeninfo для верификации
├─ Извлечение: sub, email, given_name, family_name

├─ Поиск OAuthIdentity (provider=google, uid=sub)
│ ├─ Найдена → sign in
│ └─ Не найдена:
│ ├─ User с таким email есть → привязать
│ └─ Нет → создать User + Profile

└─ Выдать JWT access_token + refresh_token
201 Created — новый пользователь
200 OK — существующий

Структура JWT

Payload access token:

{
"user_id": "uuid",
"type": "access",
"exp": 1234567890
}

Payload refresh token:

{
"user_id": "uuid",
"type": "refresh",
"exp": 1234567890
}

Алгоритм: HS256, ключ из SECRET_KEY_BASE.


Планируется

МетодСтатус
Phone + OTPПланируется
Apple Sign-InПланируется
Facebook LoginПланируется
Password ResetПланируется
Email VerificationПланируется

Ошибки токенов

СитуацияHTTPСообщение
Токен истёк401Token expired
Токен невалиден401Invalid token
Заголовок отсутствует401Invalid token