auth.php¶
Модуль аутентификации и авторизации: управление сессиями, вход через WHMCS, LDAP, API-ключи и SSO (Google, GitHub, VK), верификация 2FA, SMS и email, а также управление тегами клиентов.
Методы API¶
| Метод | Действие | Описание |
|---|---|---|
2fa_check | проверка 2FA | Проверяет корректность кода двухфакторной аутентификации для текущей сессии пользователя. |
2fa_resend | повторная отправка 2FA кода | Запрашивает повторную отправку кода двухфакторной аутентификации для пользователя. Если пользователь находится в режиме отладки, код возвращается в ответе. |
billing_list | получение списка доступных биллингов | Возвращает список доступных платежных систем (биллингов), доступных для текущего пользователя или администратора. |
email_check | проверка email | Проверяет валидность email, отправляет код верификации или проверяет уже существующий код/токен для подтверждения адреса. |
flip_tag | переключение тега | Создает или удаляет указанный тег у пользователя. Если тег уже существует, он будет удален; если не существует — создан. |
get_log | получение лога авторизации | Возвращает лог событий авторизации за указанный период или по токену. |
get_log_details | получение деталей лога аутентификации | Возвращает подробную информацию о событиях аутентификации для текущего пользователя (через user_token) |
github_init | инициализация GitHub SSO | Возвращает необходимые данные для инициализации авторизации через GitHub (client_id и redirect_uri) |
github_signin | авторизация через GitHub | Выполняет обмен кода авторизации на access token GitHub и связывает аккаунт с пользователем (SSO). Если токен уже привязан, перенаправляет на страницу 'уже использовано', если нет — выполняет привязку. |
google_signin | авторизация через Google SSO | Выполняет вход в систему с использованием Google ID Token. Если токен уже привязан к пользователю, метод связывает текущую сессию с этим аккаунтом. |
info | получение информации о токене | Возвращает подробную информацию о текущей сессии пользователя, включая роль, права доступа (permissions), данные клиента и список активных серверов. |
ipalogin | вход через LDAP (IPA) | Авторизация сотрудника через LDAP (IPA) с возможностью привязки к серверу. |
login | вход по API ключу | Авторизация через API-ключ клиента. Возвращает токен доступа, роль пользователя и список доступных серверов. |
logout | выход из системы | Очищает текущий токен доступа (access token) |
session_reset | сброс сессии | Завершает все активные сессии пользователя, соответствующие предоставленному токену сброса, и очищает связанные теги. |
set_tag | управление тегом пользователя | Создает или удаляет тег у клиента. Позволяет устанавливать значения для определенных параметров (например, auto_credit) или просто переключать наличие тега. |
tg_verify | верификация Telegram username | Привязывает Telegram username пользователя к его аккаунту и возвращает ссылку на бота для уведомлений. |
vk_init | инициализация VK OAuth | Инициирует процесс авторизации через VK, генерируя временные параметры (code_challenge, state) и сохраняя их для последующей проверки при выполнении входа. |
vk_signin | авторизация через VK | Выполняет авторизацию пользователя через OAuth2 протокол VK. Обменивает код на токен и связывает аккаунт с пользователем. |
whmcslogin | аутентификация пользователя | Выполняет вход в систему с использованием учетных данных WHMCS (email/пароль) или SSO (Google). Возвращает токен сессии, информацию о клиенте, права доступа и статус 2FA. |
auth/2fa_check¶
Проверяет корректность кода двухфакторной аутентификации для текущей сессии пользователя.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| token | ✅ | string | Токен доступа (из куки или заголовка) |
| user_token | ✅ | string | Код двухфакторной аутентификации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "Ошибка авторизации или ACL нарушение" }
```
auth/2fa_resend¶
Запрашивает повторную отправку кода двухфакторной аутентификации для пользователя. Если пользователь находится в режиме отладки, код возвращается в ответе.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| token | ✅ | string | Токен сессии пользователя |
| from | ❌ | string | Источник запроса (user_profile или resend_dialog) |
Примеры ошибок
``` { "code": -1, "message": "Invalid customer record" }
```
auth/billing_list¶
Возвращает список доступных платежных систем (биллингов), доступных для текущего пользователя или администратора.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: billing_list |
| token | ❌ | string | Токен авторизации сессии |
Пример успешного ответа
Примеры ошибок
``` { "code": -2, "message": "auth: malformed request #1" }
```
auth/email_check¶
Проверяет валидность email, отправляет код верификации или проверяет уже существующий код/токен для подтверждения адреса.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| user_email | ✅ | string | Email адрес пользователя (например, user@example.com) |
| location | ✅ | string | Код страны/региона (например, RU) |
| user_token | ❌ | string | Код верификации или токен для проверки уже существующего кода |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -2, "message": "auth/email_check: invalid email user@domain" }
```
auth/flip_tag¶
Создает или удаляет указанный тег у пользователя. Если тег уже существует, он будет удален; если не существует — создан.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: flip_tag |
| token | ✅ | string | Токен авторизации сессии |
| tag | ✅ | string | Имя тега для переключения (максимум 32 символа) |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": -2, "message": "auth/flip_tag: 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¶
Возвращает подробную информацию о событиях аутентификации для текущего пользователя (через user_token)
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: get_log_details |
| token | ✅ | string | API-токен аутентификации |
| user_token | ✅ | string | Токен пользователя для получения деталей лога |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "code": 404, "message": "Invalid period or log is empty" }
```
auth/github_init¶
Возвращает необходимые данные для инициализации авторизации через GitHub (client_id и redirect_uri)
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: github_init |
| - | - | - | Других параметров нет |
Пример успешного ответа
Примеры ошибок
``` {}
```
auth/github_signin¶
Выполняет обмен кода авторизации на access token GitHub и связывает аккаунт с пользователем (SSO). Если токен уже привязан, перенаправляет на страницу 'уже использовано', если нет — выполняет привязку.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: github_signin |
| code | ✅ | string | Код авторизации, полученный от GitHub |
| state | ❌ | string | Состояние сессии для предотвращения CSRF-атак (используется как token) |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "result": "error", "message": "Authorized, but unable to exchange code for token" }
```
auth/google_signin¶
Выполняет вход в систему с использованием Google ID Token. Если токен уже привязан к пользователю, метод связывает текущую сессию с этим аккаунтом.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: google_signin |
| credential | ✅ | string | Google ID Token (JWT) для верификации пользователя |
| token | ❌ | string | Текущий токен сессии для привязки Google аккаунта к существующему профилю |
Пример запроса
Пример успешного ответа
Примеры ошибок
``` { "MISSING_CREDENTIAL": { "result": "error", "message": "\(module/\)action: credential is missing", "error_code": "MISSING_CREDENTIAL" }, "INVALID_CREDENTIAL": { "result": "error", "message": "\(module/\)action: invalid credential", "error_code": "INVALID_CREDENTIAL" } }
```
auth/info¶
Возвращает подробную информацию о текущей сессии пользователя, включая роль, права доступа (permissions), данные клиента и список активных серверов.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| token | ✅ | string | Токен авторизации сессии |
Пример успешного ответа
{
"result": "OK",
"role": "Customer",
"role_type": "Customer",
"whmcs_id": 12345,
"whmcs_location": "RU",
"servers": [
101,
102
],
"permissions": [
"manage_products",
"show_invoices",
"edit_master_profile"
],
"token_expire": 1735689600,
"new": 1,
"customer_id": 789,
"email": "user@example.com",
"subaccount": null,
"client_ip": "192.168.1.1",
"timing": [
{
"auth_validate_token": 5
},
{
"auth_get_role": 2
}
]
}
Примеры ошибок
auth/login¶
Авторизация через API-ключ клиента. Возвращает токен доступа, роль пользователя и список доступных серверов.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| key | ✅ | string | API-ключ клиента |
| ttl | ❌ | int | Время жизни токена в секундах (по умолчанию 3600) |
| base | ❌ | string | Базовый URL для формирования invapi_url |
Пример запроса
Пример успешного ответа
{
"token": "a1b2c3d4e5f6g7h8i9j0",
"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": 1735689600,
"new": 1,
"prebill": 0,
"country": "Russia",
"country_code": "RU",
"currency_code": "RUB",
"vat": "",
"VisitorID": null,
"billing_options": {}
}
Примеры ошибок
``` { "code": -1, "message": "No appropriate servers found" }
```
auth/logout¶
Очищает текущий токен доступа (access token)
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: logout |
| token | ✅ | string | Токен сессии для удаления |
Пример запроса
Примеры ошибок
``` { "code": -2, "message": "auth: no token specified" }
```
auth/session_reset¶
Завершает все активные сессии пользователя, соответствующие предоставленному токену сброса, и очищает связанные теги.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: session_reset |
| token | ✅ | string | Токен авторизации (используется для получения hash) |
| user_email | ✅ | string | Email пользователя для сброса сессий |
| reset_token | ✅ | string | Специальный токен сброса (hash от token + reset_token) |
| confirm | ✅ | int | Подтверждение действия (должен быть равен 1) |
Пример запроса
Примеры ошибок
``` { "code": -2, "message": "auth: invalid token or email mismatch" }
```
auth/set_tag¶
Создает или удаляет тег у клиента. Позволяет устанавливать значения для определенных параметров (например, auto_credit) или просто переключать наличие тега.
HTTP-метод: POST|GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: set_tag |
| tag | ✅ | string | Имя тега (максимум 32 символа). Для клиентов разрешен только 'auto_credit'. |
| set | ✅ | boolean | Установить значение (1) или удалить тег (0/null). |
| 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 пользователя к его аккаунту и возвращает ссылку на бота для уведомлений.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: tg_verify |
| token | ✅ | string | Токен авторизации пользователя |
| tg_username | ✅ | string | Telegram username для верификации |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "Illegal TG username" }
```
auth/vk_init¶
Инициирует процесс авторизации через VK, генерируя временные параметры (code_challenge, state) и сохраняя их для последующей проверки при выполнении входа.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: vk_init |
| token | ❌ | string | Существующий токен сессии (если есть) |
| state | ❌ | string | Параметр state для проверки подлинности запроса |
Пример успешного ответа
Примеры ошибок
``` { "code": -2, "message": "auth: malformed request #1" }
```
auth/vk_signin¶
Выполняет авторизацию пользователя через OAuth2 протокол VK. Обменивает код на токен и связывает аккаунт с пользователем.
HTTP-метод: GET
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| state | ✅ | string | Состояние (state), полученное при инициализации запроса. Используется для защиты от CSRF. |
| code | ✅ | string | Код авторизации, полученный от VK. |
| device_id | ❌ | string | Идентификатор устройства. |
Пример запроса
Примеры ошибок
``` { "code": -1, "message": "Invalid host header" }
```
auth/whmcslogin¶
Выполняет вход в систему с использованием учетных данных WHMCS (email/пароль) или SSO (Google). Возвращает токен сессии, информацию о клиенте, права доступа и статус 2FA.
HTTP-метод: POST
Параметры:
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| action | ✅ | string | Идентификатор метода: whmcslogin |
| user | ❌ | string | Email пользователя для входа (требуется, если не используется SSO) |
| password | ❌ | string | Пароль пользователя (требуется, если не используется SSO) |
| sso | ❌ | string | Тип SSO провайдера (например, 'google'). Если указан, параметры user/password игнорируются. |
| sso_hash | ❌ | string | Хеш или credential для SSO входа (например, Google ID token) |
| location | ❌ | string | Явное указание локации биллинга (например, 'EU', 'RU'). Если не указано или 'Auto', система выберет автоматически. |
| full_customer_data | ❌ | string | Если равно '1', возвращает полные данные клиента в поле client_data |
| VisitorID | ❌ | string | Идентификатор посетителя для аналитики/партнерской программы |
| fix_ip | ❌ | string | Привязка токена к IP (по умолчанию 1) |
| ttl | ❌ | string | Время жизни токена в секундах (по умолчанию 86400) |
Пример запроса
Пример успешного ответа
{
"result": {
"token": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"role": "Customer",
"role_type": "Customer",
"whmcs_id": 12345,
"whmcs_location": "EU",
"whmcs_token": "",
"permissions": [
"eq/list",
"eq/show",
"billing/invoices"
],
"corporate": 0,
"verified": "pending",
"token_expire": 1715000000,
"new": 1,
"country": "Netherlands",
"country_code": "NL",
"currency_code": "EUR",
"vat": "NL123456789B01",
"VisitorID": "abc123",
"prebill": 0,
"2fa": "email",
"billing_options": {
"location": "EU",
"company": "HostKey EU",
"active": 1,
"allowed_payments": "paypal,stripe",
"native_endpoint": "billing.hostkey.eu",
"sumsub_kyc": 1
}
},
"tags": [
{
"id": 1,
"tag": "role_id",
"value": "6",
"extra": "whmcs_login:221 123456"
},
{
"id": 2,
"tag": "email",
"value": "user@example.com",
"extra": ""
},
{
"id": 3,
"tag": "whmcs_id",
"value": "12345",
"extra": ""
},
{
"id": 4,
"tag": "whmcs_location",
"value": "EU",
"extra": "whmcs_login:241 123456"
}
]
}
Примеры ошибок
``` { "code": -2, "message": "auth: empty username" }
```