Zur Startseite Live-Demo

Rollen, Rechte & Berechtigungskonzept

Wozu dient das?#

Das Kassensystem verwendet ein striktes rollenbasiertes Zugriffs- und Berechtigungskonzept (Role-Based Access Control, RBAC). Jedes Benutzerkonto im Betrieb ist exakt einer Systemrolle zugeordnet. Diese Rolle bestimmt sowohl die sichtbaren Menüpunkte und Schaltflächen am Touch-Terminal und im Backoffice als auch die serverseitige Erlaubnis zur Ausführung von Aktionen (POST, PUT, DELETE Endpunkte der REST-API).

Wer einen Vorgang in Ihrem Betrieb darf, können Leitung, Administration und Prüfer auch den KI-Assistenten fragen („Wer darf stornieren?“). Er liest die wirksame Regel mit dem Werkzeug explain_permission; Regeln ändert er nie.

Das Berechtigungskonzept erfüllt drei wesentliche Schutzfunktionen:

  1. Diebstahl- und Manipulationsschutz (Anti-Fraud): Verhindert die unbefugte Vergabe von Rabatten, das Löschen von gebuchten Artikeln oder den unbemerkt durchgeführten Kassensturz.
  2. Rechtliche Konformität (GoBD & KassenSichV): Stellt sicher, dass steuerlich relevante Stammdaten (Preise, Steuersätze), TSE-Einstellungen und Kassenbücher nicht von einfachen Servicekräften verändert werden können.
  3. Betriebliche Ergonomie: Hält die Kassenoberfläche für das Servicepersonal übersichtlich und reduziert Fehlbedienungen im hektischen Abendservice.

Ausführliche Schritt-für-Schritt-Anleitungen zur Anlage von Bedienern und Vergabe von PINs finden Sie in → Kapitel 22b.

Voraussetzungen#

  • Mindestens ein aktives Administrator-Konto (Systemrolle: admin).
  • Ein eingerichteter Mandant und Standort (→ Kapitel 20).
  • Bedienerkonten für alle Mitarbeiter mit zugewiesener Rolle und 4-stelliger Bediener-PIN (→ Kapitel 22b).

Praktische Rollen-Zuordnung (Wer bekommt welche Rolle?)#

In der betrieblichen Praxis sollte die Prinzipien der minimalen Rechtevergabe (Least Privilege) angewendet werden:

1. Rolle server (Servicekraft / Kellner / Barpersonal)#

  • Wer bekommt diese Rolle?: Alle Vollzeit- und Teilzeit-Kellner, Bar-Servicekräfte, Aushilfen und Werkstudenten.
  • Typische Aufgaben: Anmeldung am Terminal, Tische besetzen, Bestellungen bonieren, Artikeloptionen wählen, Bestellungen an Küche/Bar senden, Rechnungen aufteilen, Kassieren (Bar/Karte), Belege drucken, eigenen Schichtstatus einsehen.
  • Warum eingeschränkt?: Servicekräfte dürfen keine nachträglichen Stornos oder Rabatte ohne Freigabe durchführen, um Gefälligkeitsbuchungen und Einnahmeverluste auszuschließen. Sie haben keinen Zugang zum Backoffice.

2. Rolle manager (Schichtleiter / Oberkellner / Restaurantleiter)#

  • Wer bekommt diese Rolle?: Schichtleiter, Restaurantleiter, Bar-Manager und Chef-de-Rang.
  • Typische Aufgaben: Alle Servicefunktionen, Durchführung nachträglicher Stornierungen (mit Stornogrund), Vergabe von prozentualen oder Euro-Rabatten, Erfassung von Freibons, Durchführung des Schichtabschlusses mit Kassensturz, Bearbeitung der Speisekarte im Backoffice, Gestaltung von Tischplänen, Einsicht in Tagesberichte.
  • Warum eingeschränkt?: Der manager hat keinen Zugriff auf globale Systemeinstellungen, Geräteregistrierungen, Bediener-PINs anderer Nutzer oder TSE-Fiskalkonfigurationen.

3. Rolle admin (Betriebsinhaber / Geschäftsführer / IT)#

  • Wer bekommt diese Rolle?: Betriebsinhaber, Geschäftsführer, kaufmännische Leiter und IT-Administratoren.
  • Typische Aufgaben: Uneingeschränkter Vollzugriff auf das gesamte System. Anlegen, Bearbeiten und Löschen von Bedienerkonten und Vergabe von 4-stelligen PINs (→ Kapitel 22b), Konfiguration von Bon-Druckern, Gerätestammdaten, TSE-Fiskaleinstellungen, DATEV- und DSFinV-K-Finanzexporte.
  • Sicherheitshinweis: Teilen Sie das Passwort und die Admin-PIN niemals mit Servicekräften.

4. Spezialrolle: kitchen (Küchen-Monitor)#

  • Rolle kitchen: Spezialrolle für stationäre Touchscreens in der Küche. Ermöglicht ausschließlich das Einsehen, Sortieren und Abhaken von Bonierungen am KDS (→ Kapitel 15).

5. Spezialrolle: auditor (Finanzprüfer)#

  • Rolle auditor: Lesezugriff für Betriebsprüfer des Finanzamts bei einer Kassennachschau (→ Kapitel 23c). Ermöglicht die Einsicht in Kassenbücher, Z-Bons und den sofortigen DSFinV-K-Export ohne Schreibrechte.

Detaillierte Rechte-Matrix (Exhaustive Systemfunktionalitäten)#

Die folgende Matrix bildet alle im Handbuch beschriebenen Kassen- und Backoffice-Aktionen exakt auf die zugewiesenen Berechtigungen ab:

Funktion / Systemaktionserver (Kellner)manager (Schichtleiter)admin (Inhaber)kitchen / driverauditor (Prüfer)
Terminal per 4-stelliger PIN entsperren (11)JaJaJaJaNein
Login per Benutzername/Passwort (11)JaJaJaJaJa
Tische besetzen & Gästeanzahl (PAX) erfassen (12a)JaJaJaNeinNein
Artikel bonieren & Varianten wählen (13)JaJaJaNeinNein
Bestellung an Küche/Bar senden (13, 15)JaJaJaNeinNein
Sofortstorno (vor dem Senden an Küche) (14b)JaJaJaNeinNein
Nachträgliches Storno (nach dem Senden) (14b)Nein (Admin-PIN)Ja (mit Grund)Ja (mit Grund)NeinNein
Rabatt vergeben (Euro / Prozent) (13)Nein (Admin-PIN)JaJaNeinNein
Freibon / Hausbon erzeugen (13, 14b)Nein (Admin-PIN)JaJaNeinNein
Rechnung aufteilen (Splitting) (13a)JaJaJaNeinNein
Zahlung kassieren (Bar / Kartenzahlung) (14)JaJaJaNur driverNein
Zimmerbuchung auf Hotel-PMS buchen (33)JaJaJaNeinNein
Gutschein verkaufen / einlösen (14)JaJaJaNur driverNein
Erstbeleg ausdrucken (14a)JaJaJaNur driverNein
Beleg nachdrucken / Bewirtungsbeleg (14a)JaJaJaNur driverLeserechte
Schicht eröffnen & Anfangsbestand eingeben (12)JaJaJaNeinNein
Kassenbewegungen buchen (Einlage/Entnahme) (12)Nein (Admin-PIN)JaJaNeinNein
Schicht schließen & Z-Bericht erstellen (12)NeinJaJaNeinNein
Küchen-Monitor (KDS) bedienen / abhaken (15)NeinJaJaNur kitchenNein
Speisekarte & Preise bearbeiten (21)NeinJaJaNeinNein
Status (In/Out of Stock) umschalten (21)NeinJaJaNeinNein
Tischplan & Saalplan bearbeiten (21b)NeinJaJaNeinNein
QR-Codes für Self-Order generieren (21c)NeinJaJaNeinNein
Bediener anlegen, bearbeiten & PINs vergeben (22b)NeinNeinJaNeinNein
Bon-Drucker & Routing konfigurieren (22)NeinNeinJaNeinNein
Kassen-Geräte registrieren & freischalten (22a)NeinNeinJaNeinNein
TSE-Fiskaleinstellungen bearbeiten (23)NeinNeinJaNeinNein
DSFinV-K- & DATEV-Exporte auslösen (23b, 42)NeinNeinJaNeinNur DSFinV-K
Kassennachschau-Modus aktivieren (23c)NeinJaJaNeinJa

Bildschirm für Bildschirm: Personalverwaltung im Backoffice (RolesPermissions.tsx)#

Die Verwaltung von Bedienern und Berechtigungen erfolgt im Backoffice unter **Personalverwaltung** (t("staff_management")):

1. Hauptübersicht: Personal-Liste#

  • Header: Titel **Personalverwaltung** (staff_management), Untertitel Verwalten Sie Bedienerzugänge... (manage_terminal_operators_assign_roles_a), Aktionsbutton **Neuen Bediener hinzufügen** (add_new_operator) mit Plus-Symbol (Plus).
  • Suchfeld: search_staff_by_name (Personal nach Name suchen...).
  • Mitarbeiter-Karten: Zeigt Avatar-Icon, den vollen Namen (full_name), den Benutzernamen (@username), das Rollen-Badge (admin in primärer Farbe, server / manager grau), den Hinweis PIN-geschützt (pin_protected) sowie die Aktionsbuttons Bearbeiten (Stift-Icon) und Löschen (Mülleimer-Icon).

2. Modal: Zugang anlegen/bearbeiten (StaffEditorModal)#

  • Header: Titel **Neuer Zugriff** (new_access) bzw. **Zugriff aktualisieren** (update_access), Untertitel Zugangsdaten für Bediener konfigurieren... (configure_operator_terminal_credentials).
  • Eingabefelder:
    • **Vollständiger Name** (full_name): Textfeld mit Beispiel z. B. Max Mustermann (eg_jean_dupont).
    • **Systemrolle** (system_role): Umschalter zwischen den Rollen server und admin.
    • **4-stellige geheime PIN** (secret_pin_four_digit): Nummernfeld für exakt 4 Ziffern.
  • Fußzeile: Buttons **Abbrechen** (cancel) und **Zugriff gewähren** (grant_access) bzw. **Aktualisieren** (update).

Schritt für Schritt: Admin-Autorisierung im Kassenbetrieb (PIN-Override)#

Versucht eine Servicekraft (server) am Terminal eine geschützte Aktion durchzuführen (z. B. ein nachträgliches Storno), greift der Autorisierungs-Workflow:

[ Servicekraft tippt Storno ] ➔ [ Kasse verlangt Admin-PIN ] ➔ [ Schichtleiter gibt PIN ein ] ➔ [ Aktion einmalig freigegeben ]
  1. Die Servicekraft tippt auf dem Terminal auf die geschützte Schaltfläche (z. B. **Stornieren**).
  2. Das Kassensystem bricht die Ausführung ab und blendet das Pop-up-Fenster **Admin-Autorisierung erforderlich** ein.
  3. Der Schichtleiter oder Inhaber tritt an das Terminal und gibt seine persönliche 4-stellige PIN ein.
  4. Das Backend prüft die PIN (POST /auth/verify-pin). Besitzt das Konto die Rolle manager oder admin, wird die Aktion einmalig freigegeben und im Audit-Log mit der Bediener-ID des schreibenden Admins protokolliert.
  5. Gibt der Schichtleiter eine falsche PIN ein, zeigt die Kasse Invalid PIN an und der Vorgang bleibt gesperrt.

Was passiert im Hintergrund#

  • Die Zugriffsrechte werden auf zwei Ebenen erzwungen:
    1. Frontend-Ebene (React): Die Kassen-App blendet nicht erlaubte Schaltflächen aus oder öffnet bei Berührung das Admin-PIN-Autorisierungsfenster.
    2. Backend-Ebene (FastAPI): Jedes API-Token (JWT) enthält das Feld role. Bei jedem REST-Aufruf prüft die Policy (backend/modules/assistant/policy.py & Auth-Router), ob die Rolle für den Endpunkt autorisiert ist. Bei fehlenden Rechten gibt der Server den Fehler Access denied (HTTP 403 Forbidden) zurück.
  • Bei allen Admin-Overrides speichert das System ein Audit-Event im Outbox-Speicher mit Zeitstempel, betroffener Rechnungsnummer, ausführender Servicekraft-ID und genehmigender Admin-ID (→ Kapitel 23).

Häufige Probleme#

1. Access denied#

  • Ursache: Die angemeldete Rolle besitzt keine Berechtigung für diese Aktion.
  • Lösung: Rufen Sie einen Schichtleiter (manager) oder Administrator (admin), um die Aktion per Admin-PIN freizugeben.

2. Invalid PIN bei der Admin-Freigabe#

  • Ursache: Die zur Freigabe eingegebene PIN gehört zu einem Bediener mit der Rolle server oder war fehlerhaft.
  • Lösung: Die PIN-Freigabe erfordert zwingend die PIN eines manager- oder admin-Kontos.

3. Neuer Mitarbeiter kann sich nicht anmelden#

  • Ursache: Die vergebene 4-stellige PIN wird im Betrieb bereits von einem anderen Mitarbeiter verwendet.
  • Lösung: Jede PIN darf pro Mandant nur einmal existieren. Vergeben Sie im Backoffice eine andere PIN (→ Kapitel 22b).

Grenzen#

  • Keine freidefinierbaren Berechtigungsmatrizen: Die Zugriffsrechte der Rollen server, manager, admin, kitchen, driver und auditor sind im System fest verankert und können im Backoffice nicht in Einzelberechtigungen aufgespalten werden.
  • Exakte 4-Ziffern-Begrenzung: Bediener-PINs am Terminal sind aus Ergonomie- und Geschwindigkeitsgründen auf exakt 4 Ziffern beschränkt.

Dieses Kapitel gehört zum Merkuron-Handbuch für Inhaber und Servicepersonal.