auth.php¶
Модуль аутентификации и авторизации: управление сессиями, вход через WHMCS, LDAP, API-ключи и SSO (Google, GitHub, VK), верификация 2FA, SMS и email, а также управление тегами клиентов.
Методы API¶
| Метод | Действие | Описание |
|---|---|---|
2fa_check | проверка 2FA | Валидирует код двухфакторной аутентификации для текущей сессии пользователя. |
2fa_resend | повторная отправка 2FA кода | Отправляет повторный код двухфакторной аутентификации на привязанный канал (email или SMS) для текущей сессии. |
billing_list | получение списка доступных биллингов | Возвращает список доступных платежных систем (биллингов), настроенных для текущего пользователя или администратора. |
email_check | проверка email | Проверяет существование клиента по email в указанной локации биллинга. Если клиент не найден, создается новый. Также отправляет код верификации на email. |
flip_tag | переключение тега | Позволяет переключать состояние (создать или удалить) указанного тега у клиента. Если тег уже существует, он будет удален; если не существует — создан. |
get_log | получение лога авторизации | Возвращает лог событий авторизации за указанный период или по токену. |
get_log_details | получение деталей лога аутентификации | Возвращает подробную информацию о событиях аутентификации по токену пользователя |
github_init | инициализация GitHub SSO | Инициирует процесс авторизации через GitHub, генерирует уникальный state и возвращает необходимые данные для перенаправления пользователя на OAuth страницу GitHub. |
github_signin | инициализация входа через GitHub | Инициирует процесс OAuth авторизации через GitHub. Генерирует временный state и возвращает данные клиента для перенаправления пользователя. |
google_signin | вход через Google SSO | Выполняет аутентификацию пользователя с помощью Google ID Token. Если токен валиден, привязывает Google аккаунт к текущей сессии или связывает его с существующим клиентом. |
info | получение информации о токене | Возвращает подробную информацию о текущей сессии пользователя, включая роль, права доступа (permissions), данные клиента и активные серверы. |
ipalogin | вход через LDAP (IPA) | Авторизация сотрудника через LDAP (IPA) с возможностью привязки к серверу. |
login | вход по API ключу | Авторизация пользователя с использованием API-ключа. Возвращает токен доступа, информацию о роли и список доступных серверов. |
logout | выход из системы | Очищает текущий токен доступа пользователя, завершая сессию. |
session_reset | сброс сессии | Завершает все активные сессии пользователя, основываясь на его email и токене сброса. Выполняет очистку тегов (purge tags) для всех найденных хешей. |
set_tag | управление тегом пользователя | Создает или удаляет тег у клиента. Если параметр set равен 1, тег создается, если 0 — удаляется. |
tg_verify | привязка Telegram username | Привязывает указанный Telegram username к аккаунту пользователя и возвращает ссылку на бота. Удаляет старый тег tg_user_id. |
vk_init | инициализация авторизации через VK | Инициирует процесс OAuth-авторизации через VK, генерирует code_challenge и возвращает необходимые данные для редиректа пользователя. |
vk_signin | авторизация через VK | Инициирует процесс авторизации через социальную сеть ВКонтакте. Генерирует временные данные (state, code_verifier) и сохраняет их во временном хранилище для последующей проверки при возврате пользователя. |
whmcslogin | авторизация через WHMCS или SSO | Выполняет вход в систему. Поддерживает стандартную авторизацию по email/паролю, а также вход через сторонние сервисы (Google, GitHub, VK) и автоматический выбор биллинга. |
auth/2fa_check¶
Валидирует код двухфакторной аутентификации для текущей сессии пользователя.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| token | ✅ | string | Токен активной сессии |
| code | ❌ | string | Код двухфакторной аутентификации (передается через user_token в логике проверки) |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "Access denied by IP restrictions" }
```
auth/2fa_resend¶
Отправляет повторный код двухфакторной аутентификации на привязанный канал (email или SMS) для текущей сессии.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| token | ✅ | string | Токен активной сессии пользователя |
| from | ❌ | string | Источник запроса: user_profile или resend_dialog |
Примеры ошибок
``` { "code": -1, "message": "Unable to load authentication data, please try again" }
```
auth/billing_list¶
Возвращает список доступных платежных систем (биллингов), настроенных для текущего пользователя или администратора.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: billing_list |
| token | ❌ | string | Токен авторизации сессии |
Пример успешного ответа
{
"result": "OK",
"billings": [
{
"location": "RU",
"company": "Hostkey Russia",
"active": 1,
"url": "https://ru.hostkey.com",
"admin_url": "https://ru.hostkey.com/admin",
"allowed_endpoints": [
"login",
"register"
],
"PAYPAL_ID": "PAY-123456789"
},
{
"location": "US",
"company": "Hostkey Global",
"active": 1,
"url": "https://hostkey.com",
"admin_url": "https://hostkey.com/admin",
"allowed_endpoints": [
"login"
],
"PAYPAL_ID": null
}
]
}
Примеры ошибок
``` { "code": -1, "message": "Access denied by IP restrictions" }
```
auth/email_check¶
Проверяет существование клиента по email в указанной локации биллинга. Если клиент не найден, создается новый. Также отправляет код верификации на email.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: email_check |
| user_email | ✅ | string | Email пользователя (например, user@example.com) |
| location | ✅ | string | Локация биллинга (например, whmcs) |
| user_token | ❌ | string | Токен пользователя (если требуется) |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": 0, "message": "Invalid email or billing location error" }
```
auth/flip_tag¶
Позволяет переключать состояние (создать или удалить) указанного тега у клиента. Если тег уже существует, он будет удален; если не существует — создан.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: flip_tag |
| token | ✅ | string | Токен авторизации сессии |
| tag | ✅ | string | Имя тега для переключения (например, 'auto_credit') |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": "TAG_MISSING", "message": "\(module/\)action: tag is missing" }
```
auth/get_log¶
Возвращает лог событий авторизации за указанный период или по токену.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_log |
| token | ✅ | string | Токен сессии |
| user_token | ❌ | string | Токен пользователя для поиска лога |
| period_start | ❌ | string | Начало периода (YYYY-MM-DD) |
| period_stop | ❌ | string | Конец периода (YYYY-MM-DD) |
| user_email | ❌ | string | Email пользователя для фильтрации лога |
Пример запроса
Пример успешного ответа
auth/get_log_details¶
Возвращает подробную информацию о событиях аутентификации по токену пользователя
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_log_details |
| token | ✅ | string | Токен сессии для получения деталей лога |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": 404, "message": "Invalid period or log is empty" }
```
auth/github_init¶
Инициирует процесс авторизации через GitHub, генерирует уникальный state и возвращает необходимые данные для перенаправления пользователя на OAuth страницу GitHub.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: github_init |
| token | ❌ | string | Существующий токен сессии (если есть) |
Пример успешного ответа
Примеры ошибок
``` { "code": -1, "message": "sso_github_unavailable" }
```
auth/github_signin¶
Инициирует процесс OAuth авторизации через GitHub. Генерирует временный state и возвращает данные клиента для перенаправления пользователя.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: github_signin |
| state | ✅ | string | OAuth state для проверки валидности запроса |
| token | ❌ | string | Токен сессии для привязки аккаунта GitHub к текущему пользователю |
| code | ✅ | string | Код авторизации от GitHub |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "result": "error", "message": "no state", "error_code": "OAUTH_STATE_MISSING" }
```
auth/google_signin¶
Выполняет аутентификацию пользователя с помощью Google ID Token. Если токен валиден, привязывает Google аккаунт к текущей сессии или связывает его с существующим клиентом.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: google_signin |
| credential | ✅ | string | Google ID Token (JWT) для верификации пользователя |
| token | ❌ | string | Существующий токен сессии для привязки Google аккаунта к текущему пользователю |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "MISSING_CREDENTIAL": { "result": "error", "message": "\(module/google_signin: credential is missing", "error_code": "MISSING_CREDENTIAL" }, "INVALID_CREDENTIAL": { "result": "error", "message": "\)module/google_signin: invalid credential", "error_code": "INVALID_CREDENTIAL" } }
```
auth/info¶
Возвращает подробную информацию о текущей сессии пользователя, включая роль, права доступа (permissions), данные клиента и активные серверы.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: info |
| token | ✅ | string | Токен авторизации |
Пример запроса
Пример успешного ответа
{
"result": "OK",
"role": "Customer",
"role_name": "Customer",
"role_type": "Customer",
"whmcs_id": 12345,
"whmcs_location": "US",
"servers": [
101,
102
],
"customer_id": 5678,
"permissions": [
"manage_products",
"show_invoices"
],
"token_expire": 1735689600,
"new": 1,
"prebill": true,
"prebill_scope": "all",
"email": "user@example.com",
"client_ip": "192.168.1.1",
"corporate": 0,
"verified": null,
"sumsub_id": null,
"sumsub_comment": null,
"default_lang": "en",
"private_ranges": [],
"private_vlans": [],
"billing_options": {},
"has_product_subscription": false,
"deploy_keys": [],
"prebill_pending": []
}
Примеры ошибок
``` { "code": -2, "message": "Invalid token" }
```
auth/login¶
Авторизация пользователя с использованием API-ключа. Возвращает токен доступа, информацию о роли и список доступных серверов.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| key | ✅ | string | API-ключ для авторизации |
| ttl | ❌ | int | Время жизни токена в секундах (по умолчанию 3600) |
Пример запроса
Пример успешного ответа
{
"token": "7bc29eb23fb1b879b21fce509597f07c",
"role": "Customer",
"role_type": "Customer",
"whmcs_id": 12345,
"whmcs_location": "US",
"servers": [
101,
102
],
"invapi": "https://invapi.hostkey.com",
"customer_id": 5678,
"permissions": [
"manage_products",
"show_invoices"
],
"token_expire": 1715432400,
"new": 1,
"prebill": true,
"prebill_scope": "all"
}
Примеры ошибок
``` { "code": -1, "message": "No appropriate servers found" }
```
auth/logout¶
Очищает текущий токен доступа пользователя, завершая сессию.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: logout |
| token | ✅ | string | Токен доступа для завершения сессии |
Пример запроса
Примеры ошибок
``` { "code": -2, "message": "Token is not specified" }
```
auth/session_reset¶
Завершает все активные сессии пользователя, основываясь на его email и токене сброса. Выполняет очистку тегов (purge tags) для всех найденных хешей.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| token | ✅ | string | Токен авторизации для выполнения действия |
| user_email | ✅ | string | Email пользователя для сброса сессии |
| reset_token | ✅ | string | Специальный токен сброса (hash от reset_token) |
| confirm | ❌ | integer | Флаг подтверждения действия (1 для выполнения) |
Пример запроса
Примеры ошибок
``` { "code": -2, "message": "Malformed request" }
```
auth/set_tag¶
Создает или удаляет тег у клиента. Если параметр set равен 1, тег создается, если 0 — удаляется.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: set_tag |
| tag | ✅ | string | Имя тега (максимум 32 символа). Для клиентов разрешен только 'auto_credit' |
| set | ✅ | integer | Действие: 1 для создания тега, 0 для удаления |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Примеры ошибок
`` { "TAG_MISSING": { "code": -2, "message": "$module/$action: tag is missing" }, "VALUE_MISSING": { "code": -2, "message": "$module/$action: set is missing" }, "TAG_TOO_LONG": { "code": -2, "message": "$module/$action: tag too long (32 max)" }, "TAG_INVALID": { "code": -2, "message": "$module/$action: invalid tag (onlyauto_credit` is allowed)" }, "NO_CUSTOMER_ID": { "code": -2, "message": "\(module/\)action: no customer_id tags was found" } }
```
auth/tg_verify¶
Привязывает указанный Telegram username к аккаунту пользователя и возвращает ссылку на бота. Удаляет старый тег tg_user_id.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: tg_verify |
| token | ✅ | string | Токен авторизации сессии |
| tg_username | ✅ | string | Telegram username для привязки |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "Illegal TG username" }
```
auth/vk_init¶
Инициирует процесс OAuth-авторизации через VK, генерирует code_challenge и возвращает необходимые данные для редиректа пользователя.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: vk_init |
| token | ❌ | string | Токен сессии (из \(_POST/\)_GET) |
| state | ✅ | string | Состояние OAuth-авторизации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "result": -1, "error": "SSO_UNAVAILABLE", "message": "sso_github_unavailable" }
```
auth/vk_signin¶
Инициирует процесс авторизации через социальную сеть ВКонтакте. Генерирует временные данные (state, code_verifier) и сохраняет их во временном хранилище для последующей проверки при возврате пользователя.
HTTP-метод: GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Действие (автоматически определяется как vk_signin при наличии параметров устройства) |
| state | ✅ | string | Состояние OAuth-запроса для защиты от CSRF. Принимает значение в формате state[]=val1&state[]=val2 |
| code | ✅ | string | Код авторизации, полученный от VK после подтверждения пользователем |
| device_id | ❌ | string | Идентификатор устройства пользователя |
| token | ✅ | string | API-токен аутентификации |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "INVALID_HOST_HEADER": { "result": "error", "message": "Invalid host header", "code": "INVALID_HOST_HEADER" }, "ERROR_VK_REQUEST": { "result": "error", "message": "Error occur when querying VK", "code": "ERROR_VK_REQUEST" }, "ERROR_FETCH_VK_USER": { "result": "error", "message": "Authorized, but unable to get VK user", "code": "ERROR_FETCH_VK_USER" }, "OAUTH_STATE_MISMATCH": { "result": "error", "message": "incorrect state", "code": "OAUTH_STATE_MISMATCH" }, "OAUTH_STATE_MISSING": { "result": "error", "message": "no state", "code": "OAUTH_STATE_MISSING" }, "OAUTH_CODE_VERIFIER_MISSING": { "result": "error", "message": "no code_verifier", "code": "OAUTH_CODE_VERIFIER_MISSING" } }
```
auth/whmcslogin¶
Выполняет вход в систему. Поддерживает стандартную авторизацию по email/паролю, а также вход через сторонние сервисы (Google, GitHub, VK) и автоматический выбор биллинга.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: whmcslogin |
| token | ✅ | string | Токен авторизации |
| sso | ❌ | string | Метод SSO (google, github, vk) |
| sso_hash | ❌ | string | Хеш/токен для SSO авторизации |
| user | ✅ | string | Email пользователя (для обычной авторизации) |
| password | ✅ | string | Пароль пользователя |
| location | ❌ | string | Конкретный биллинг (WHMCS location) |
Пример запроса
Пример успешного ответа
{
"result": "OK",
"module": "auth",
"action": "whmcslogin",
"token": "7bc29eb23fb1b879b21fce509597f07c",
"role": "Customer",
"role_type": "Customer",
"whmcs_id": 12345,
"whmcs_location": "US",
"permissions": [
"manage_products",
"show_invoices"
],
"token_expire": 1715865600,
"new": 1,
"country": "United States",
"country_code": "US",
"currency_code": "USD",
"vat": "",
"prebill": true,
"prebill_scope": "all",
"client_details": {
"account_id": 12345,
"email": "user@example.com",
"userid": 12345,
"billing": "US",
"currency_code": "USD",
"countrycode": "US",
"countryname": "United States"
},
"contact_id": 0,
"corporate": 0,
"verified": null,
"client_ip": "127.0.0.1",
"timing": []
}
Примеры ошибок
``` { "code": -2, "message": "Invalid credential" }
```