Files
Ivan Fontosh c36f1d629a Support period and fixed expiry modes in License Manager UI.
Create keys with validDays by default and show activation-aware expiry in the license list.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 22:46:11 +08:00

73 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TTRPG License Manager
Android-приложение для администрирования лицензий **TTRPG Player** через сервер [DndGamePlayerLicenseServer](https://git.mailib.ru/ifontosh/DndGamePlayerLicenseServer).
## Возможности
- **Лицензии** — список всех продуктовых ключей с параметрами (`sub`, `pid`, лимит устройств, срок, статус отзыва, активированные `deviceId`).
- **Новый ключ** — генерация продуктового ключа через `POST /v1/admin/product-keys`.
- По умолчанию — **period** (`validDays`, отсчёт с первой активации в TTRPG Player).
- Режим **фиксированная дата** — явный `expiresAtSec` (старый формат).
- **Настройки** — URL сервера и admin token (`LICENSE_ADMIN_TOKEN`).
## Требования
- Android Studio Ladybug (2024.2+) или новее
- JDK 17
- Android SDK 35
## Сборка
### Первоначальная настройка SDK (Windows)
```powershell
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
```bash
./gradlew assembleDebug
```
APK: `app/build/outputs/apk/debug/app-debug.apk`
1. Откройте проект в Android Studio (или соберите через Gradle, см. выше).
2. При первом запуске укажите в **Настройках**:
- URL: `https://license.ttrpgplayer.ru/` (или локальный сервер)
- Admin token с сервера (`LICENSE_ADMIN_TOKEN`)
3. Run на устройстве или эмуляторе.
```bash
./gradlew assembleDebug
```
## API сервера
Приложение использует admin-эндпоинты (Bearer token):
| Метод | Путь | Описание |
|-------|------|----------|
| GET | `/v1/admin/licenses` | Список лицензий |
| POST | `/v1/admin/product-keys` | Создание ключа |
Перед использованием приложения задеплойте обновлённый сервер с этими эндпоинтами.
## Логотип
Иконка и брендинг — логотип TTRPG Player (фиолетовая молния `#8B5CF6`).
## Локальная разработка с сервером
```bash
cd DndGamePlayerLicenseServer
cp data.example.json data.json
# задайте LICENSE_PRIVATE_KEY_PEM
npm start
```
В приложении укажите URL `http://10.0.2.2:3847/` (эмулятор) и admin token.