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:
- Diebstahl- und Manipulationsschutz (Anti-Fraud): Verhindert die unbefugte Vergabe von Rabatten, das Löschen von gebuchten Artikeln oder den unbemerkt durchgeführten Kassensturz.
- 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.
- 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
managerhat 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 / Systemaktion | server (Kellner) | manager (Schichtleiter) | admin (Inhaber) | kitchen / driver | auditor (Prüfer) |
|---|---|---|---|---|---|
Terminal per 4-stelliger PIN entsperren (11) | Ja | Ja | Ja | Ja | Nein |
Login per Benutzername/Passwort (11) | Ja | Ja | Ja | Ja | Ja |
Tische besetzen & Gästeanzahl (PAX) erfassen (12a) | Ja | Ja | Ja | Nein | Nein |
Artikel bonieren & Varianten wählen (13) | Ja | Ja | Ja | Nein | Nein |
Bestellung an Küche/Bar senden (13, 15) | Ja | Ja | Ja | Nein | Nein |
Sofortstorno (vor dem Senden an Küche) (14b) | Ja | Ja | Ja | Nein | Nein |
Nachträgliches Storno (nach dem Senden) (14b) | Nein (Admin-PIN) | Ja (mit Grund) | Ja (mit Grund) | Nein | Nein |
Rabatt vergeben (Euro / Prozent) (13) | Nein (Admin-PIN) | Ja | Ja | Nein | Nein |
Freibon / Hausbon erzeugen (13, 14b) | Nein (Admin-PIN) | Ja | Ja | Nein | Nein |
Rechnung aufteilen (Splitting) (13a) | Ja | Ja | Ja | Nein | Nein |
Zahlung kassieren (Bar / Kartenzahlung) (14) | Ja | Ja | Ja | Nur driver | Nein |
Zimmerbuchung auf Hotel-PMS buchen (33) | Ja | Ja | Ja | Nein | Nein |
Gutschein verkaufen / einlösen (14) | Ja | Ja | Ja | Nur driver | Nein |
Erstbeleg ausdrucken (14a) | Ja | Ja | Ja | Nur driver | Nein |
Beleg nachdrucken / Bewirtungsbeleg (14a) | Ja | Ja | Ja | Nur driver | Leserechte |
Schicht eröffnen & Anfangsbestand eingeben (12) | Ja | Ja | Ja | Nein | Nein |
Kassenbewegungen buchen (Einlage/Entnahme) (12) | Nein (Admin-PIN) | Ja | Ja | Nein | Nein |
Schicht schließen & Z-Bericht erstellen (12) | Nein | Ja | Ja | Nein | Nein |
Küchen-Monitor (KDS) bedienen / abhaken (15) | Nein | Ja | Ja | Nur kitchen | Nein |
Speisekarte & Preise bearbeiten (21) | Nein | Ja | Ja | Nein | Nein |
Status (In/Out of Stock) umschalten (21) | Nein | Ja | Ja | Nein | Nein |
Tischplan & Saalplan bearbeiten (21b) | Nein | Ja | Ja | Nein | Nein |
QR-Codes für Self-Order generieren (21c) | Nein | Ja | Ja | Nein | Nein |
Bediener anlegen, bearbeiten & PINs vergeben (22b) | Nein | Nein | Ja | Nein | Nein |
Bon-Drucker & Routing konfigurieren (22) | Nein | Nein | Ja | Nein | Nein |
Kassen-Geräte registrieren & freischalten (22a) | Nein | Nein | Ja | Nein | Nein |
TSE-Fiskaleinstellungen bearbeiten (23) | Nein | Nein | Ja | Nein | Nein |
DSFinV-K- & DATEV-Exporte auslösen (23b, 42) | Nein | Nein | Ja | Nein | Nur DSFinV-K |
Kassennachschau-Modus aktivieren (23c) | Nein | Ja | Ja | Nein | Ja |
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), UntertitelVerwalten 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 (adminin primärer Farbe,server/managergrau), den HinweisPIN-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), UntertitelZugangsdaten 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 Rollenserverundadmin.**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 ]
- Die Servicekraft tippt auf dem Terminal auf die geschützte Schaltfläche (z. B.
**Stornieren**). - Das Kassensystem bricht die Ausführung ab und blendet das Pop-up-Fenster
**Admin-Autorisierung erforderlich**ein. - Der Schichtleiter oder Inhaber tritt an das Terminal und gibt seine persönliche 4-stellige PIN ein.
- Das Backend prüft die PIN (
POST /auth/verify-pin). Besitzt das Konto die Rollemanageroderadmin, wird die Aktion einmalig freigegeben und im Audit-Log mit der Bediener-ID des schreibenden Admins protokolliert. - Gibt der Schichtleiter eine falsche PIN ein, zeigt die Kasse
Invalid PINan und der Vorgang bleibt gesperrt.
Was passiert im Hintergrund#
- Die Zugriffsrechte werden auf zwei Ebenen erzwungen:
- Frontend-Ebene (React): Die Kassen-App blendet nicht erlaubte Schaltflächen aus oder öffnet bei Berührung das Admin-PIN-Autorisierungsfenster.
- 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 FehlerAccess 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
serveroder war fehlerhaft. - Lösung: Die PIN-Freigabe erfordert zwingend die PIN eines
manager- oderadmin-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,driverundauditorsind 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.