Ivan Fontosh 74a6795b6f Fix license list loading and crash on duplicate subs.
Read admin token from DataStore before API calls, reload licenses after save, and use unique product key as LazyColumn item key.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 14:08:58 +08:00

TTRPG License Manager

Android-приложение для администрирования лицензий TTRPG Player через сервер DndGamePlayerLicenseServer.

Возможности

  • Лицензии — список всех продуктовых ключей с параметрами (sub, pid, лимит устройств, срок, статус отзыва, активированные deviceId).
  • Новый ключ — генерация продуктового ключа через POST /v1/admin/product-keys.
  • Настройки — URL сервера и admin token (LICENSE_ADMIN_TOKEN).

Требования

  • Android Studio Ladybug (2024.2+) или новее
  • JDK 17
  • Android SDK 35

Сборка

Первоначальная настройка SDK (Windows)

powershell -ExecutionPolicy Bypass -File .\scripts\setup-android-sdk.ps1
$env:ANDROID_HOME = "$env:LOCALAPPDATA\Android\Sdk"

Android Studio установлен в C:\Program Files\Android\Android Studio. Для запуска на устройстве подключите телефон с USB-отладкой или создайте эмулятор в Android Studio (Device Manager).

Сборка debug APK

./gradlew assembleDebug

APK: app/build/outputs/apk/debug/app-debug.apk

  1. Откройте проект в Android Studio (или соберите через Gradle, см. выше).
  2. При первом запуске укажите в Настройках:
    • URL: https://license.mailib.ru/ (или локальный сервер)
    • Admin token с сервера (LICENSE_ADMIN_TOKEN)
  3. Run на устройстве или эмуляторе.
./gradlew assembleDebug

API сервера

Приложение использует admin-эндпоинты (Bearer token):

Метод Путь Описание
GET /v1/admin/licenses Список лицензий
POST /v1/admin/product-keys Создание ключа

Перед использованием приложения задеплойте обновлённый сервер с этими эндпоинтами.

Логотип

Иконка и брендинг — логотип TTRPG Player (фиолетовая молния #8B5CF6).

Локальная разработка с сервером

cd DndGamePlayerLicenseServer
cp data.example.json data.json
# задайте LICENSE_PRIVATE_KEY_PEM
npm start

В приложении укажите URL http://10.0.2.2:3847/ (эмулятор) и admin token.

S
Description
No description provided
Readme 162 KiB
Languages
Kotlin 98.1%
PowerShell 1.9%