Перейти к содержанию

Auth API Reference 🔐

Система аутентификации Gifty построена на базе протокола OAuth 2.0 с PKCE. Мы поддерживаем вход через Google, Yandex и VK. Сессии хранятся в Redis и передаются клиенту через HttpOnly Secure куки.


🚀 Протокол входа (Flow)

Для фронтенд-разработчиков процесс входа выглядит так: 1. Перенаправить пользователя на /auth/{provider}/start. 2. Бекенд выполнит редирект на страницу логина провайдера. 3. После успешного входа провайдер вернет юзера на наш Callback. 4. Бекенд установит сессионную куку gifty_session и перенаправит пользователя обратно на фронтенд.


🔑 Эндпоинты

1. Запуск авторизации (/{provider}/start)

Инициирует процесс входа.

  • URL: /api/v1/auth/{provider}/start
  • Метод: GET
  • Параметры:
    • provider: google, yandex или vk.
    • return_to (query, optional): URL на фронтенде, куда нужно вернуть пользователя после входа (по умолчанию /).
  • Результат: 302 Redirect.

2. Информация о себе (/me)

Проверка статуса текущего пользователя.

  • URL: /api/v1/auth/me
  • Метод: GET
  • Response: UserDTO
    {
      "id": "uuid",
      "name": "Имя Пользователя",
      "email": "user@example.com",
      "avatar_url": "https://...",
      "is_active": true
    }
    
  • Ошибки:
    • 401 Unauthorized: Если сессия недействительна или отсутствует.

3. Выход (/logout)

Завершение сессии.

  • URL: /api/v1/auth/logout
  • Метод: POST
  • Результат: Удаление куки и очистка данных в Redis.

🛡 Безопасность

  • Cookies: Кука gifty_session устанавливается с флагами HttpOnly, Secure, SameSite=Lax.
  • PKCE: Используется для защиты от перехвата кода авторизации.
  • State: Защита от CSRF атак через проверку состояния.