UnicoreCMS

Лаунчер GML

Авторизация Gml.Launcher через Custom Endpoint

Сайт умеет работать сервисом входа для лаунчера GML (Gml.Launcher). Игрок вводит в лаунчере логин и пароль от сайта, бэкенд GML спрашивает у нас, кто это, и пускает игрока внутрь.

В отличие от GravitLauncher, ставить со стороны сайта ничего не нужно: работает ручка /auth/gml/login, а на стороне GML выбирается один способ входа.

Подключение

Выбрать способ входа в GML

В админке GML: Интеграции → Авторизация → Изменить, способ входа — Custom Endpoint.

Указать адрес

В поле адреса впишите полный адрес API вместе с путём:

https://api.example.com/auth/gml/login

Этот режим GML адрес не обрезает, поэтому и порт, и путь доезжают до сайта как есть.

Проверить

curl https://api.example.com/auth/gml/login \
  -H 'Content-Type: application/json' \
  -d '{"Login":"owner","Password":"пароль-игрока"}'

Если в ответе пришли ник и UUID игрока, связка работает.

API-ключ не нужен

Ручка публичная и рассчитана на запросы самого бэкенда GML. Частота запросов ограничена так же, как вход на сайт.

Формат запроса

Имена полей пишутся с заглавной буквы — в таком виде их присылает сам GML:

{
  "Login": "owner",
  "Password": "пароль",
  "Totp": "123456"
}

Login — ник или почта. Totp нужен только на повторном запросе, когда у игрока включена двухфакторная аутентификация.

Ответы

ОтветКогда
200 с ником, UUID и флагом IsSlimВход разрешён
401 с require2fa в телеУ игрока включена двухфакторка: лаунчер запросит код и повторит запрос
401Неверный логин или пароль
403Аккаунт заблокирован либо почта не подтверждена, если включено обязательное подтверждение
429Слишком частые попытки

Про встроенный тип «UniCoreCMS»

В списке способов входа GML есть и готовый тип «UniCoreCMS». Пользы в нём мало: адрес сайта он обрезает до домена, без порта и пути, а запрос лаунчера не проходит проверку captcha — на сайтах с включённой captcha такой вход не работает совсем. Custom Endpoint свободен от обеих проблем.

Новости

У GML есть провайдер новостей «Custom»: ему нужен адрес, который отдаёт массив вида { id, title, description, createdAt }. Сайт отдаёт его по адресу:

GET {API_BASEURL}/news/gml?limit=20

Без авторизации. В description — текст новости без HTML, createdAt — дата публикации; скрытые новости не попадают. limit — от 1 до 100, по умолчанию 20. Штатный список /news для этого провайдера не подходит: он отдаёт страницу с data и meta, а не массив.

Что передаётся, а что нет

Лаунчеру уходят ник, UUID и флаг slim у скина. Игровые сессии GML ведёт сам, вход на сервер сайт не проверяет. Скины и плащи из кабинета лаунчер может брать по публичным адресам с ником или UUID — они описаны на странице Скины и плащи; укажите их в настройках скинов GML.

Блокировка и неподтверждённая почта срабатывают при следующем входе в лаунчер. Уже запущенную игру это не прерывает.

Содержание