Module lizenzieren & im Store verkaufen
Jedes Nexus-Modul und das ACP/Core selbst ist eine lizenzierbare Einheit in der Modul-Registry von JuByteWeb. Eine Lizenz schaltet eine beliebige Teilmenge davon frei. Dieser Guide zeigt die drei Wege, Module einer Lizenz zuzuordnen.
Begriffe
- Modul-Registry (
nexus_modules): datengetriebene Liste aller lizenzierbaren Einheiten. Jede hat einemodule_id, die exakt der Java-@NexusModule.id()entspricht (z. B.bansystem,anticheat-hub), sowie die Spezialeinheitacp(Kind = CORE). Neues Modul hinzufügen = eine Zeile (Seed-Migration oderPOST /api/admin/modules) – kein Enum/Code nötig. - Produkt (
products): der verkaufbare Store-Eintrag (Preis, Medien, Kategorie). Die Brücke zur Registry ist der Produkt-Key.
Weg 1 – Ein Modul als Produkt verkaufen
- Store-Admin → Produkte → Neu.
- Produkt-Key = die Modul-ID (z. B.
bansystem,anticheat-hub,acp). Der Key ist nachträglich nicht änderbar. - Produkttyp Plugin, Status ACTIVE.
- Mindestens eine Preisstufe anlegen – ohne sie ist das Produkt nicht
kaufbar (
TIER_NOT_FOUND).
Beim Kauf entsteht eine Lizenz, deren Entitlement automatisch dieses Modul
enthält (der Resolver matcht order.product gegen die module_id).
Weg 2 – Mehrere Module in einem Paket (Bundle)
- Neues Produkt anlegen (nicht ein bestehendes Modul-Produkt umwandeln).
Der Bundle-Key ist ein freier Name (z. B.
premium-pack), keine Modul-ID. - Produkttyp Paket (Bundle) → speichern.
- Es erscheint die Sektion Bundle-Mitglieder (erst nach dem Speichern, da
die Produkt-ID gebraucht wird). Dort die einzelnen Modul-Produkte hinzufügen
(z. B.
shop,anticheat-hub, …). - Preisstufe fürs Bundle anlegen.
Der Kauf liefert eine Lizenz, die alle enthaltenen Module freischaltet –
der Resolver läuft die Bundle-Mitglieder durch und übernimmt deren module_ids.
Voraussetzung: jedes Mitglied hat als Key seine Modul-ID.
Weg 3 – Einer Lizenz direkt Module zuweisen
Unabhängig von Produkten, ideal für manuelle Vergabe, Tests, Sonderfälle:
Admin → Lizenzen → Lizenz öffnen → „Module verwalten" → beliebig viele Module ankreuzen → Speichern.
Das sind explizite Grants (license_module_grants) und die Quelle der
Wahrheit für das modules[]-Claim. Mit „Entitlement-JWS kopieren" kannst
du das fertige signierte Dokument direkt kopieren (z. B. für manuelle Aktivierung
per POST /api/v1/license/activate).
Wie das Entitlement zusammengesetzt wird
resolveEntitledModuleIds bildet die Vereinigung aus:
- expliziten Grants der Lizenz (Weg 3) – maßgeblich,
- dem Produkt-/Bundle-Key, sofern er einer
module_identspricht (Weg 1/2), - dem Legacy-
LicenseProduct-Enum – nur bei echten Alt-Lizenzen ohne Produkt-/Order-Bezug (verhindert Fehlzuweisungen bei neuen Produkten).
Es werden nur Module ausgegeben, die in der Registry aktiv sind. Für „alle
Module" kann das Dokument ["*"] enthalten.
Ein neues Modul registrieren
Wenn ein Modul noch nicht in der Registry ist:
POST /api/admin/modules
{ "moduleId": "newmodule", "name": "New Module", "kind": "MODULE", "premium": true }
(moduleId: ^[a-z][a-z0-9-]*$, erlaubt Bindestriche wie anticheat-hub.)
Siehe Lizenz-API-Referenz.