Skip to content

Аутентификация

Эндпоинты аутентификации не требуют JWT-токена (кроме /auth/me и /auth/logout).

POST /auth/register

Регистрация нового пользователя. Создаёт пользователя, опционально — организацию, и возвращает токен.

Тело запроса

json
{
  "name": "Иван Петров",
  "email": "ivan@example.com",
  "password": "securePassword123",
  "organization_name": "Моя Компания"
}

Успешный ответ (201)

json
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "a1b2c3d4-e5f6-...",
  "token_type": "Bearer",
  "expires_at": "2026-06-12T13:00:00Z",
  "user": {
    "id": 1,
    "email": "ivan@example.com",
    "name": "Иван Петров",
    "organization_id": 1
  }
}

Ошибки

КодПричина
400Некорректное тело запроса (пустое имя, слабый пароль)
409Email уже зарегистрирован
500Ошибка сервера

POST /auth/login

Вход по email и паролю.

Тело запроса

json
{
  "email": "ivan@example.com",
  "password": "securePassword123"
}

Успешный ответ (200)

json
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "a1b2c3d4-e5f6-...",
  "token_type": "Bearer",
  "expires_at": "2026-06-12T13:00:00Z",
  "user": {
    "id": 1,
    "email": "ivan@example.com",
    "name": "Иван Петров",
    "organization_id": 1
  }
}

Ошибки

КодПричина
400Некорректное тело запроса
401Неверный email или пароль

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

Неудачные попытки входа логируются в таблицу login_attempts:

sql
INSERT INTO login_attempts (user_id, ip_address, user_agent, success, failure_reason, created_at)
VALUES (1, '192.168.1.100', 'Mozilla/5.0...', false, 'Invalid password', NOW())

POST /auth/refresh

Обновление access-токена с помощью refresh-токена.

Тело запроса

json
{
  "refresh_token": "a1b2c3d4-e5f6-..."
}

Успешный ответ (200)

json
{
  "access_token": "новый_access_токен",
  "refresh_token": "новый_refresh_токен",
  "token_type": "Bearer",
  "expires_at": "2026-06-12T14:00:00Z",
  "user": {
    "id": 1,
    "email": "ivan@example.com",
    "name": "Иван Петров",
    "organization_id": 1
  }
}

Ошибки

КодПричина
401Невалидный или истёкший refresh-токен

POST /auth/logout

Завершение сессии на сервере. Требует JWT-токен.

Заголовки

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Успешный ответ (200)

json
{
  "message": "Logged out successfully"
}

На стороне сервера удаляется запись из user_sessions по user_id и session_token.

GET /auth/me

Информация о текущем пользователе. Требует JWT-токен.

Заголовки

Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Успешный ответ (200)

json
{
  "id": 1,
  "email": "ivan@example.com",
  "name": "Иван Петров",
  "organization_id": 1
}

Ошибки

КодПричина
401Токен отсутствует или невалиден
404Пользователь не найден

Сводная таблица

МетодПутьАутентификацияОписание
POST/auth/registerНетРегистрация
POST/auth/loginНетВход
POST/auth/refreshНетОбновление токенов
POST/auth/logoutBearerВыход
GET/auth/meBearerТекущий пользователь