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

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

Вход в систему

POST /api/client/login

Вход для администратора/оператора организации.

Request:

{
"organization_id": "uuid",
"username": "string",
"password": "string"
}

Response (200):

{
"status": "success",
"organization_id": "uuid",
"organization_name": "Название организации"
}

Cookies:

  • client_session_token — токен сессии (HttpOnly)
  • client_csrf_token — CSRF токен

Ошибки:

КодСообщениеПричина
400Invalid credentialsНеверный логин/пароль
429Too many attemptsПревышен лимит попыток

Пример (cURL)

curl -X POST https://api.smaiwer.ru/api/client/login \
-H "Content-Type: application/json" \
-c cookies.txt \
-d '{
"organization_id": "550e8400-e29b-41d4-a716-446655440000",
"username": "admin",
"password": "secret123"
}'

Пример (JavaScript)

const response = await fetch('https://api.smaiwer.ru/api/client/login', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
organization_id: '550e8400-e29b-41d4-a716-446655440000',
username: 'admin',
password: 'secret123'
})
});

const data = await response.json();

Выход из системы

POST /api/client/logout

Завершение текущей сессии.

Response (200):

{
"status": "success",
"message": "Logged out successfully"
}

Проверка сессии

GET /api/client/session

Проверка текущей сессии и получение информации о пользователе.

Response (200):

{
"status": "success",
"data": {
"organization_id": "uuid",
"organization_name": "Название",
"username": "admin",
"role": "admin"
}
}

Response (401):

{
"status": "error",
"message": "Not authenticated"
}

CSRF защита

Все изменяющие запросы (POST, PUT, DELETE) требуют CSRF токен:

const csrfToken = getCookie('client_csrf_token');

fetch('/api/client/send_message', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': csrfToken
},
body: JSON.stringify({ /* ... */ })
});

Супер-администратор

POST /api/superadmin/login

Вход для супер-администратора платформы.

Request:

{
"username": "string",
"password": "string"
}

Response (200):

{
"status": "success",
"message": "Login successful"
}

Cookies:

  • superadmin_session_token
  • superadmin_csrf_token