UnicoreCMS

Лаунчер

Интеграция с GravitLauncher и отдача скинов

Сайт умеет работать сервисом авторизации для GravitLauncher. Игрок вводит логин и пароль от сайта, лаунчер спрашивает у нас, кто это, и получает сессию для входа на сервер.

Со стороны лаунчера этим занимается модуль UnicoreProvider, со стороны сайта работают ручки под /auth/gravit. Для других лаунчеров есть отдельные страницы — Лаунчер GML и Лаунчсервер Laminara.

Подключение

Выпустить ключ

Утилиты → API-ключи → Создать, право kernel.provider, в разрешённые адреса — IP машины, где стоит LaunchServer.

Настроить UnicoreProvider

В конфиге LaunchServer пропишите базовый адрес API и выпущенный ключ. Ключ уходит в заголовке Authorization: Api-Key …, как у всех остальных машинных клиентов.

Проверить

curl https://api.example.com/auth/gravit/ping \
  -H 'Authorization: Api-Key ваш-ключ'

Если в ответе пришли данные служебного пользователя, ключ и адрес приняты.

Ручки

Все требуют право kernel.provider.

МетодПутьЧто делает
GET/auth/gravit/pingПроверка связи
GET/auth/gravit/getAuthDetailsКакие способы входа поддерживаются
GET/auth/gravit/getUserByUsername/:usernameНайти по нику или почте
GET/auth/gravit/getUserByUUID/:uuidНайти по UUID
GET/auth/gravit/getUserByTokenКто владелец access-токена
POST/auth/gravit/authorizeВход по паролю (и TOTP)
POST/auth/gravit/refreshTokenОбновить токен
POST/auth/gravit/deleteSessionЗакрыть сессию
POST/auth/gravit/exitUserВыйти со всех устройств
POST/auth/gravit/checkServerПроверка входа на сервер
POST/auth/gravit/joinServerРегистрация входа на сервер

getAuthDetails отвечает, что поддерживаются password и totp. По этому ответу лаунчер решает, спрашивать ли второй фактор.

Ошибки

Вместо обычных сообщений здесь возвращаются свои коды. Лаунчер их ждёт и показывает игроку понятный текст:

КодКогда
auth.usernotfoundТакого игрока нет
auth.wrongpasswordНеверный пароль
auth.require2faНужен код двухфакторки
auth.userblockedАккаунт заблокирован
auth.expiretokenТокен просрочен
auth.invalidtokenТокен битый

Неактивированные аккаунты

Если в настройках включено обязательное подтверждение почты, игрок без подтверждения не должен попадать на сервер. Проверяйте это на стороне сервера. Сессия сама по себе ещё не значит, что аккаунт активирован.

Скины и плащи

Адрес и хеш скина приходят в ответе на запрос игрока, лаунчеру ничего настраивать не нужно. Публичные адреса текстур по нику и UUID, кэширование и поведение без файла описаны на странице Скины и плащи.

Публичные профили

ПутьЧто отдаёт
/users/public/username/:usernameПрофиль по нику
/users/public/uuid/:uuidПрофиль по UUID
/users/public/user/:usernameРасширенный публичный профиль

Наружу уходит только безопасное подмножество полей. Ни почты, ни балансов, ни служебных флагов там нет.

Содержание