Dashboard: Login, Konten & Rechte
Das Web-Dashboard ist die Schaltzentrale für Moderation und Verwaltung. Diese Seite erklärt, wie man sich anmeldet, was unter Mein Konto steht, wie Teammitglieder Rechte bestellen und wie Admins Rechte vergeben.
Lizenz: Login, Konten und Rechteverwaltung gehören zu core und damit standardmäßig zur kostenlosen Base (wie punishments, reports, lobby). Welche Bereiche des Dashboards sichtbar sind, hängt von den freigeschalteten Modulen ab; welche Module frei sind, kann sich ändern – gesperrte Module zeigt das Dashboard ausgegraut.
Voraussetzungen
- REST-API läuft (
EternalApi-<ver>.jar, Konfiguration inapi.yml). - Auf Proxy und Spigots in
config.yml:
api:
enabled: true
base-url: http://localhost:7070 # Adresse der REST-API
shared-secret: "" # gleicher Wert wie internal.shared-secret in api.yml
poll-interval-seconds: 3 # Abfrage der Aktions-Queue (Web → Ingame)
- In der
api.yml:
internal:
shared-secret: "REPLACE_WITH_RANDOM_INTERNAL_SECRET"
session:
ttl-seconds: 86400 # Dauer einer Web-Sitzung (24 h)
link-ttl-seconds: 300 # Gültigkeit des Ingame-Codes (5 min)
accounts:
enabled: true
min-password-length: 8
login-attempts-per-10min: 10
server:
trust-forwarded-for: false # hinter Caddy/nginx/Apache auf true
Anmelden
Die Login-Seite hat drei Reiter:
Account-Link (Ingame-Code)
- Code generieren klicken – das Dashboard zeigt einen Code.
- Ingame
/eternal link <Code>eingeben (innerhalb vonsession.link-ttl-seconds). - Das Dashboard meldet dich automatisch an.
/eternal link darf jeder Spieler, es braucht kein Recht. Im Netzwerk beantwortet der Proxy den Befehl – dort muss api.enabled: true mit dem richtigen Secret stehen, sonst kommt „Die REST-API ist nicht konfiguriert“.
Passwort
Gebannte Spieler können sich nicht ingame verlinken. Damit sie trotzdem ins Dashboard kommen (Antrag stellen, Replay zum Bann ansehen), gibt es Passwort-Konten:
- Einmal per Account-Link anmelden.
- Mein Konto → Dashboard-Konto: Passwort setzen. Recht
eternal.web.account(Standard-Stufe Alle). - Ab dann im Reiter Passwort mit Minecraft-Name + Passwort anmelden – auch gebannt.
- Passwörter werden mit PBKDF2-HMAC-SHA256 (210 000 Iterationen, 16-Byte-Salt) gespeichert.
- Schutz gegen Durchprobieren:
login-attempts-per-10minpro IP + Name, zusätzlich das Fünffache pro IP unabhängig vom Namen (danach HTTP 429). - Passwort ändern oder Konto löschen (jeweils mit aktuellem Passwort) beendet alle anderen Sitzungen.
- Nach einer Namensänderung wird der Name beim nächsten Code-Login übernommen.
Hinter einem Reverse-Proxy unbedingt server.trust-forwarded-for: true setzen – sonst teilen sich alle Besucher die IP des Proxys und sperren sich gegenseitig aus. Nur aktivieren, wenn die API nicht direkt aus dem Internet erreichbar ist.
API-Key
Für Admins: einen statischen Schlüssel aus api.yml eintragen.
api-keys:
- key: "REPLACE_WITH_RANDOM_STRING" # mindestens 32 Zeichen
name: "Admin-Bootstrap"
# - key: "second-key-xyz"
# name: "Tooling"
# uuid: "00000000-0000-0000-0000-000000000000" # optional: Spieler für den Rang-Schutz
Ein API-Key hat Vollzugriff ohne Rechteprüfung – der garantierte Notfall-Zugang, falls noch kein Rang Dashboard-Rechte hat. Er hat aber kein Spielerkonto: Reports annehmen, Teleport und andere Ingame-Aktionen gehen damit nicht.
Mein Konto
Jeder angemeldete Spieler sieht:
- Profilkarte mit Rang, Tier, Anzeigename, Coins und District – mit Links auf Mein Profil (die Spieler-Seite, wie Teammitglieder sie sehen: Historie, Nick-Verlauf, Anträge) und Mein Inventar (eigene Inventare, Zwischenlager, Items). Beides geht ohne Team-Recht – jeder darf seine eigenen Daten sehen.
- Deine Grundstücke: alle eigenen Plots mit Welt, ID, District und Größe (siehe Grundstücke).
- Du bist aktuell gemutet, falls ein Mute läuft.
- Dashboard-Konto: Passwort setzen, ändern, Konto löschen.
- Deine Moderation (für Teammitglieder): Zähler der eigenen Banns, Mutes und bearbeiteten Reports.
- Replays zu deinen Banns (
eternal.replay.own): das Replay hinter dem eigenen Bann, siehe Replays. - Aktiver Bann mit Entbannungsantrag stellen, darunter Frühere Anträge. Siehe Bans & Mutes.
- Deine Historie: eigene Strafen.
Unter Coins & Markt sieht jeder sein Guthaben (siehe Coins & Aktienmarkt).
Woher die Dashboard-Rechte kommen
Es gibt keine festen Rollen wie ADMIN/MOD/PLAYER. Was jemand im Dashboard darf, ergibt sich allein aus Rechten mit dem Präfix eternal.web.* (plus Moderations-Rechten wie eternal.ban, eternal.report.handle). Für jede Prüfung gilt diese Reihenfolge – die erste Antwort gewinnt:
- Benutzer-Override – persönliche Freigabe oder Sperre für genau diesen Spieler (z. B. aus einer genehmigten Rechte-Anfrage).
- Eternal Perms – Rechte der Ränge des Spielers und seine eigenen Rechte, inklusive Wildcards und Verboten.
- Alte CloudNet-Spiegelung – Rechte der CloudNet-Gruppe aus früheren Versionen.
- Alte Web-Rolle – Rechte aus dem Editor Rollen & Rechte.
- Standard-Stufe des Rechts (siehe Rechte-Referenz).
Eine Stelle für alle Rechte: Unter Rollen & Rechte (Ränge) und Benutzer & Ränge (Spieler) gibt es nur noch einen Editor – Ingame- und Dashboard-Rechte in einer durchsuchbaren Liste, gruppiert nach Bereich bzw. Plugin, je Recht Erlaubt, Verboten oder – (optional mit Stärke und Ablaufdatum). Bei jedem Recht steht, was es kann: die Beschreibung aus Eternal oder der plugin.yml; Rechte, die nur im Code eines Plugins gefunden wurden, bekommen eine automatisch erzeugte Beschreibung (z. B. worldedit.region.set → „WorldEdit: Region – setzen“). Alte Dashboard-Rechte (Web-Rollen, persönliche Overrides) erscheinen dort mit dem Abzeichen alt und werden beim Speichern als Rang- bzw. Spieler-Rechte übernommen; alte Dashboard-Rollen ohne Rang lassen sich mit einem Klick in einen Rang umwandeln.
Eternal-Perms-Ränge vergeben eternal.web.* direkt. Ein Rang „Moderator“ mit eternal.web.dashboard, eternal.web.player.view und eternal.report.handle sieht genau diese Bereiche – eine eigene Web-Rolle ist nicht mehr nötig. Wildcards funktionieren: eternal.web.* gibt alle Dashboard-Rechte, * alles. Ein Verbot auf den genauen Schlüssel sticht eine breitere Wildcard (z. B. eternal.web.* erlaubt, eternal.web.admin verboten = alles außer Admin-Bereich).
Kein Aussperren: Gibt es beim Start keinen Rang mit *, eternal.*, eternal.web.* oder eternal.web.admin, bekommt der höchste Rang einmalig automatisch *. Und ein API-Key aus api.yml kommt immer hinein.
Das Dashboard blendet Menüpunkte ohne passendes Recht aus. Die API prüft jedes Recht zusätzlich serverseitig (HTTP 403, ohne Abmeldung).
Läuft die Eternal Cloud, stehen alle Seiten dieses Abschnitts (Rollen & Rechte, Benutzer & Ränge, Rechte bestellen, Rechte-Anfragen, Rechte-Katalog) im eigenen Bereich Ränge & Rechte (/perms) statt im Dashboard-Menü Admin; die alten Adressen leiten dorthin weiter.
Rechte bestellen (für das Team)
Wer eternal.team hat, sieht im Menü Admin → Rechte bestellen (/access-requests):
- Zwei Reiter: Ingame (alle
eternal.*-Rechte außereternal.web.*) und Website (eternal.web.*). - Freitext-Suche über Titel, Schlüssel, Beschreibung und Schlagwörter („kisten sperren“) – alle Wörter müssen passen.
- Warenkorb: mehrere Rechte sammeln, eine gemeinsame Begründung, eine Bestellung. Schon gehaltene („Hast du“) und bereits angefragte Rechte werden übersprungen.
- Pakete: vom Admin zusammengestellte Bündel; ein Klick legt alle noch fehlenden Rechte in den Warenkorb.
- Hinweise „Wirkt nur mit …“ (fehlende Voraussetzungen, rot markiert) und „Empfohlen dazu …“.
- Meine Anfragen: Status der eigenen Bestellungen.
Rechte-Anfragen (für Admins)
Admin → Rechte-Anfragen (/admin/permission-requests), Recht eternal.web.admin:
- Freigeben schreibt das Recht als Benutzer-Override nur für den Anfrager – permanent oder befristet (1 Tag, 7 Tage, 30 Tage).
- Ablehnen vermerkt nur die Entscheidung.
- Freigaben wirken ingame sofort: Der Override wird an die Server gemeldet und angewendet.
- Abgelaufene Freigaben zählen automatisch nicht mehr; beim Öffnen der Liste werden sie aufgeräumt und die Anfrage auf „abgelaufen“ gesetzt.
Rechte-Katalog (für Admins)
Admin → Rechte-Katalog (/admin/permission-catalog), Recht eternal.web.permissions.catalog:
- Pro Recht die Beschreibung überschreiben (leer = eingebauter Text) und Schlagwörter für die Suche pflegen.
- Standard-Stufe pro Recht ändern (Aus / Team / Admin / Alle) – die eingebaute Stufe steht daneben.
- Pakete anlegen, bearbeiten, löschen (Kennung
a-z,0-9,-). - Alles liegt als
permission-meta.ymlin der Datenbank und lässt sich zwischen Netzwerken übertragen.
Benutzer & Ränge, Overrides
Admin → Benutzer & Ränge (/admin/users), Recht eternal.web.admin:
- Alle bekannten Spieler suchen (auch offline).
- Ränge des Spielers sehen, hinzufügen, entfernen.
- Persönliche Rechte-Overrides: pro Recht Erlauben, Verbieten oder „Rolle“ (= zurück zum Standard des Rangs). Filter „Nur gesetzte“ zeigt alle Overrides des Spielers.
Overrides stechen alles andere, auch die Ränge – gezielt für Ausnahmen einsetzen.
Alte Rollen (Rollen & Rechte)
Admin → Rollen & Rechte (/admin/permissions) ist der Rollen-Editor aus der Zeit vor Eternal Perms. Mit CloudNet zeigt er die CloudNet-Gruppen, ohne CloudNet lassen sich eigene Rollen anlegen und einer Gruppe zuordnen. Die Rechte dort gelten weiterhin (Stufe 4 der Reihenfolge oben), werden aber von den Eternal-Perms-Rängen überstimmt.
Ein Rollen-Recht wird zusätzlich in die zugehörige CloudNet-Gruppe geschrieben und gilt damit netzwerkweit für alle Mitglieder. Für neue Installationen Rechte direkt in den Rängen unter Rechte → Ränge pflegen.
Weitere Admin-Seiten
| Seite | Recht | Inhalt |
|---|---|---|
| Admin → Aktive User | eternal.web.admin | Wer gerade im Dashboard angemeldet ist |
| Rechte → Ränge / Spieler | eternal.web.perms | Eternal Perms: Ränge, Vererbung, Prefix, Mitglieder, Spieler-Ränge mit Ablauf |
| Server → Module / Zuordnung | eternal.web.modules | siehe Module & Presets |
| Server → Updates / Wartung | eternal.web.updates | siehe Auto-Updates |
Empfohlene Rang-Rechte
| Rang | Rechte |
|---|---|
| Owner | * |
| Admin | eternal.web.*, eternal.ban, eternal.ban.admin, eternal.unban, eternal.unban.admin, eternal.mute, eternal.report.handle, eternal.team |
| Moderator | eternal.web.dashboard, eternal.web.player.view, eternal.web.chatlogs, eternal.report.handle, eternal.ban, eternal.mute, eternal.unban, eternal.team |
| Supporter | eternal.team (bekommt alle Rechte mit Standard-Stufe Team und darf weitere bestellen) |
| Spieler | nichts – sieht nur das eigene Konto |
Typische Stolperfallen
- „Code unbekannt oder abgelaufen“ beim Verlinken: Code abgelaufen (5 Minuten) oder
api.enabled/Secret auf dem Proxy falsch. - Login klappt, aber das Menü ist leer: Der Rang hat keine
eternal.web.*-Rechte und keineternal.team. Mit dem API-Key anmelden und Rechte vergeben. - Teamler sieht „Rechte bestellen“ nicht:
eternal.teammuss ausdrücklich vergeben sein (Rang, Override oder Wildcard) – es greift nie über die Standard-Stufe. - Alle Logins gesperrt (429):
trust-forwarded-forfehlt hinter dem Reverse-Proxy. - Override wirkt nicht wie erwartet: Overrides stechen alles. „Nur gesetzte“ beim Spieler prüfen und auf „Rolle“ zurücksetzen.