Bedrud Документация

Все эндпоинты аутентификации находятся под /api/auth/.

Обзор

Bedrud поддерживает несколько методов аутентификации:

МетодЭндпоинтОписание
Email/ПарольPOST /api/auth/loginОбычный вход
РегистрацияPOST /api/auth/registerСоздание аккаунта
Гостевой входPOST /api/auth/guest-loginВременный доступ
OAuthGET /api/auth/:provider/loginВход через соцсети
PasskeysPOST /api/auth/passkey/*FIDO2/WebAuthn
Обновление токенаPOST /api/auth/refreshОбновление access-токена

Формат токена

При успешной аутентификации возвращается пара JWT-токенов:

{
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIs..."
}
  • Access Token - короткоживущий, используется в заголовке Authorization
  • Refresh Token - долгоживущий, используется для получения новых access-токенов

Использование токенов

Добавляйте access token во все авторизованные запросы:

Authorization: Bearer <accessToken>

Эндпоинты

Регистрация

Создание новой учётной записи пользователя.

POST /api/auth/register

Тело запроса:

{
  "email": "user@example.com",
  "password": "securepassword",
  "name": "John Doe"
}

Ответ (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ...",
  "user": {
    "id": "uuid",
    "email": "user@example.com",
    "name": "John Doe",
    "role": "user"
  }
}

Вход

Аутентификация по email и паролю.

POST /api/auth/login

Тело запроса:

{
  "email": "user@example.com",
  "password": "securepassword"
}

Ответ (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ...",
  "user": {
    "id": "uuid",
    "email": "user@example.com",
    "name": "John Doe",
    "role": "user"
  }
}

Гостевой вход

Вход в качестве гостя без создания аккаунта. Гости имеют ограниченные права.

POST /api/auth/guest-login

Тело запроса:

{
  "name": "Guest User"
}

Ответ (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ...",
  "user": {
    "id": "uuid",
    "name": "Guest User",
    "role": "guest"
  }
}

Получение текущего пользователя

Получение профиля авторизованного пользователя.

GET /api/auth/me

Заголовки: Authorization: Bearer <accessToken>

Ответ (200):

{
  "id": "uuid",
  "email": "user@example.com",
  "name": "John Doe",
  "avatar": "https://...",
  "role": "user",
  "provider": "email"
}

Обновление токена

Обмен refresh-токена на новый access-токен.

POST /api/auth/refresh

Тело запроса:

{
  "refreshToken": "eyJ..."
}

Ответ (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ..."
}

Выход

Аннулирование текущего refresh-токена.

POST /api/auth/logout

Заголовки: Authorization: Bearer <accessToken>

Тело запроса:

{
  "refreshToken": "eyJ..."
}

Ответ (200):

{
  "message": "logged out"
}

Вход через OAuth

Запуск потока OAuth через социального провайдера.

GET /api/auth/:provider/login

Поддерживаемые провайдеры:

ПровайдерПуть
Google/api/auth/google/login
GitHub/api/auth/github/login
Twitter/api/auth/twitter/login

Сервер перенаправляет пользователя на страницу авторизации провайдера. После согласия провайдер перенаправляет обратно на callback URL, и сервер возвращает JWT-токены.


Ответы об ошибках

Все эндпоинты аутентификации возвращают ошибки в следующем формате:

{
  "error": "invalid credentials"
}
СтатусЗначение
400Некорректный запрос (отсутствующие поля, ошибка валидации)
401Неверные учётные данные или истёкший токен
409Email уже зарегистрирован
500Внутренняя ошибка сервера

См. также