Zum Inhalt springen

Editor:innen verwalten

Setzkasten hat zwei Rollen — Admin und Editor. Welche Person welche Rolle hat, steht in _editors.json im Content-Pfad. Die Rolle kommt nicht mehr aus dem Auth-Provider — Admins können sich auch per Google einloggen, Editoren auch per GitHub.

Rollen im Überblick

  • Admin — voller Zugriff. Darf Inhalte editieren, andere Editor:innen anlegen, Lizenz aktivieren, Settings ändern, History rollbacken.
  • Editor — darf nur Inhalte bearbeiten. Optional auf bestimmte Seiten beschränkt (per pages-Feld). Sieht keine Settings, keine Editor:innen-Verwaltung, keine Verlauf-/Rollback-Funktion.

Im Admin verwalten

Admins öffnen ⚙ Settings → Editor:innen. Dort lassen sich Personen hinzufügen, entfernen, zwischen Admin und Editor wechseln und Seiten-Einschränkungen setzen. Änderungen werden als Entwurf gehalten und erst beim Klick auf Speichern committet.

Schutzregeln

  • Last-Admin-Schutz: Mindestens ein Admin muss erhalten bleiben — der Server lehnt Updates ab, die den letzten Admin entfernen oder demoten.
  • Self-Demote-Schutz: Niemand kann sich selbst herabstufen oder entfernen — eine andere Person muss das machen.
  • Duplicate-Email-Schutz: Doppelte Einträge werden case-insensitive erkannt und abgelehnt.

Datei-Format

Die Datei wird im Content-Repo (Single-Mode) bzw. Config-Repo (Multi-Mode) gepflegt. Pre-v1.3-Einträge ohne role-Feld werden als editor behandelt — bestehende _editors.json-Dateien funktionieren ohne Änderung.

content/_editors.json
// content/_editors.json
[
  {
    "email": "chefin@example.com",
    "role": "admin"
  },
  {
    "email": "redaktion@example.com",
    "role": "editor"
  },
  {
    "email": "blog-autor@example.com",
    "role": "editor",
    "pages": ["blog", "news"]
  }
]

Bootstrap (erste Anmeldung)

Solange keine _editors.json existiert, dürfen GitHub-User aus SETZKASTEN_ALLOWED_EMAILS als Admin reinkommen — sonst gäbe es ein Henne-Ei-Problem. Sobald der erste Admin angelegt hat, übernimmt _editors.json die Hoheit.

Setzkasten-Login (Editor:innen ohne GitHub)

Editor:innen, die keinen GitHub-Account haben, können sich per Google-Konto über Setzkasten-Login (Firebase-basiert) anmelden. Das ist eine Pro-Funktion und wird in der globalen Konfiguration aktiviert. Server-seitig läuft die Anmeldung über dasselbe _editors.json.

Lizenz-Gate

Editor-Verwaltung ist eine Pro-Funktion. Free-Lizenzen können _editors.json lesen, aber nicht ändern — das UI zeigt einen Hinweis-Banner mit „Lizenz aktivieren"- Button, der Server antwortet mit 403 + code: 'feature-locked'.

HTTP 403
// HTTP 403 Forbidden bei Free-Tier
{
  "code": "feature-locked",
  "feature": "editors",
  "requiredTier": "pro",
  "currentTier": "free",
  "error": "Feature \"editors\" requires pro tier (current: free)."
}

Per-Website-Einschränkungen (Multi-Mode)

Im Multi-Mode hat zusätzlich jeder Eintrag in websites.json eine eigene allowedEmails-Liste. Editor:innen müssen sowohl in _editors.json als auch in der jeweiligen Website-Liste stehen. Admins passieren diese Schicht immer.