Anlage zum AVV · Berechtigungskonzept · Stand 2026-06-08
Rollen-Matrix (Berechtigungskonzept)
Zweck dieses Dokuments
Die Matrix dokumentiert für jede in der WebApp existierende
Rolle, welche Module sie aufrufen und welche Aktionen sie
darin ausführen darf. Sie ist die Konkretisierung des
Berechtigungskonzepts gemäß Art. 32 DSGVO und Anlage zum
AVV. Die Drift zwischen Anwendung und dieser Matrix wird
automatisiert über den Drift-Test
tests/test_role_map_routes.py sowie über die
9-Rollen-Permission-Matrix
tests/test_role_matrix_extended.py in der
CI/CD-Pipeline geprüft.
Lesehilfe
Rollen-Übersicht
| Rolle | Zweck / typische Vergabe |
|---|---|
| Admin | Mandanten-Verwalter. Vollzugriff auf alle Module + Konfiguration + Mitarbeiter-Verwaltung. |
| Verwaltung (delegiert) | Mitarbeiter mit einer oder mehreren der ~20 Verwaltungs-Kompetenzen. Vergabe pro Bereich (z. B. „Weiterbildung", „Beschwerde", „Kontakte") ohne Voll-Admin-Rechte. |
| Manager (Standortleitung) | Leitung eines konkreten Standorts. Sieht/verwaltet eigene Standort-Mitarbeiter, kann Termine + Aufträge anlegen. |
| Regional Manager (Bereichsleitung) | Leitung mehrerer Standorte. Wie Manager, jedoch nicht standortgebunden. |
| Facility (Hauswirtschaft) | Pflegt Snacks-/Getränke-Bestand, Wareneingang, Schwellwerte; sieht eigenen Standort. |
| Baker (interner Anbieter) | Pflegt das Sortiment unternehmenseigener Anbieter (z. B. hauseigene Bäckerei). Backoffice-Zugriff auf interne Vendors. |
| Tradesman (Handwerker) | Mitglied eines Handwerker-Trupps. Eigene Stunden buchen, eigene Aufträge ansehen; Lead-Flag erlaubt zusätzlich Trupp-interne Pflege. |
| Employee (Mitarbeiter) | Normaler Mitarbeiter. Eigene Termine, Bestellungen, Weiterbildungen, KVP-/Beschwerde-Einreichung. |
| Minijobber | Wie Employee, aber mit reduziertem Modul-Set (keine Handwerker-Verwaltung, kein Fahrtenbuch-Leitung). Zeitapp ist Pflicht. |
| External (externer Anbieter / Gast) | Externer Anbieter mit eigenem Backoffice für sein Sortiment + Bestellungen, oder Beirats-/Klienten-Gastkonto mit konfigurierbarer Whitelist. |
Berechtigungs-Matrix Rolle × Modul
Spaltenüberschriften sind die Module der App; pro Zelle die wirksame Berechtigung der Rolle. Lese-Modus ist die rein sichtende Variante (z. B. eigene Termine im Kalender); Schreiben ist „eigene Einträge anlegen/ändern" — Lösch- und Pflege-Rechte über fremde Einträge bündelt die Spalte „Vollzugriff" beim Admin und ggf. bei der Verwaltung mit passender Kompetenz.
| Modul / Bereich | Admin | Verwaltung* | Manager | Regional Mgr | Facility | Baker | Tradesman | Employee | Minijobber | External |
|---|---|---|---|---|---|---|---|---|---|---|
| Dashboard / Aktuelles (lesen) | V | L | L | L | L | L | L | L | L | L |
| Aktuelles / News (verwalten) | V | V* | — | — | — | — | — | — | — | — |
| Kalender (eigene + Audience) | V | S | S | S | S | S | S | S | S | L |
| Termine / Veranstaltungen (anlegen) | V | V* | S | S | — | — | S | — | — | — |
| Sitzungen (Live-Protokoll, Folgesitzungen) | V | V* | S | S | L | L | L | L | L | — |
| Sitzungszimmer-Buchung | V | V* | S | S | S | S | S | S | S | — |
| Standorte / Abteilungen (lesen) | V | V* | L | L | L | L | L | L | L | L |
| Standorte / Abteilungen (verwalten) | V | V* | — | — | — | — | — | — | — | — |
| Anbieter (öffentliche Sicht / Bestellung) | V | S | S | S | S | S | S | S | S | — |
| Anbieter-Verwaltung (Stammdaten/Sortiment) | V | V* | — | — | — | — | — | — | — | — |
| Anbieter-Backoffice (interner Anbieter) | V | — | — | — | — | V | — | — | — | — |
| Anbieter-Backoffice (externer Anbieter) | V | — | — | — | — | — | — | — | — | V |
| Snacks & Getränke (Kauf) | V | S | S | S | S | S | S | S | S | — |
| Snacks Bestand / Hauswirtschaft | V | V* | — | — | V | — | — | — | — | — |
| Verzehr-/Einrichtungs-Abrechnung | V | V* | — | — | — | — | — | — | — | — |
| Handwerker-Aufträge (Liste/Detail) | V | V* | S | S | — | — | S | — | — | — |
| Handwerker-Auftrag anlegen / vergeben | V | V* | V | V | — | — | — | — | — | — |
| Truppen / Trupp-Mitglieder pflegen | V | V* | — | — | — | — | — | — | — | — |
| Fahrtenbuch (eigene Fahrten) | V | S | S | S | S | S | S | S | S | — |
| Fahrtenbuch Leitung (alle Fahrten) | V | V* | V | V | — | — | — | — | — | — |
| Fahrzeug-Reservierung | V | S | S | S | S | S | S | S | S | — |
| Weiterbildungen (eigene Anmeldung/Feedback) | V | S | S | S | S | S | S | S | S | L |
| Weiterbildungen verwalten (Typen, Pflichten) | V | V* | — | — | — | — | — | — | — | — |
| Dokumente (eigene Verteilungen ansehen) | V | S | S | S | S | S | S | S | S | — |
| Dokumente verwalten / verteilen | V | V* | V | V | — | — | — | — | — | — |
| Chat (1:1 und Gruppen) | V | S | S | S | S | S | S | S | S | — |
| In-App-Postfach (eigene Nachrichten) | V | L | L | L | L | L | L | L | L | L |
| Bike-to-Work / Tippspiel | V | S | S | S | S | S | S | S | S | — |
| KVP / Verbesserungs-Vorschläge einreichen | V | S | S | S | S | S | S | S | S | — |
| KVP / Beschwerde — Verwaltung | V | V* | — | — | — | — | — | — | — | — |
| Beauftragte — öffentliche Sicht / Nachricht | V | S | S | S | S | S | S | S | S | — |
| Beauftragte — Stellen anlegen/verwalten | V | V* | — | — | — | — | — | — | — | — |
| Beauftragte — eigene Stelle pflegen | V | V* | — | — | — | — | — | — | — | — |
| Mitarbeiter-Verwaltung (Einladen, Rollen) | V | V* | — | — | — | — | — | — | — | — |
| Mandanten-Identität / Branding / Welcome-Mail | V | — | — | — | — | — | — | — | — | — |
| Service-Toggles / Modul-Schalter | V | — | — | — | — | — | — | — | — | — |
| Datenschutz-Lebenszyklus / Mandanten-Kündigung | V | — | — | — | — | — | — | — | — | — |
| Stripe-Abrechnung / Tarif-Wechsel | V | — | — | — | — | — | — | — | — | — |
| Profil (eigene Daten, Push-Settings) | V | V | V | V | V | V | V | V | V | V |
| Audit-Logs / Sicherheits-Logs einsehen | V | — | — | — | — | — | — | — | — | — |
*) Verwaltung (delegiert): die jeweilige Vollzugriffs-Markierung (V*) gilt nur, wenn der betroffene Nutzer die entsprechende Verwaltungs-Kompetenz besitzt (z. B. „beschwerde" für KVP/Beschwerde-Verwaltung, „weiterbildung" für Weiterbildungs-Pflege, „beauftragte" für Beauftragten-Pflege etc.). Ohne passende Kompetenz verhält sich der Nutzer in dem Modul wie ein normaler Employee.
Verwaltungs-Kompetenzen im Detail
Die Rolle „Verwaltung (delegiert)" ist nicht binär: ein Mitarbeiter erhält pro Bereich eine eigene Kompetenz- Markierung. Aktuell sind folgende Bereiche kombinierbar:
- aktuelles — News-Beiträge schreiben/veröffentlichen.
- termine — Termine + Veranstaltungen verwalten.
- standorte — Standort-Stammdaten.
- mitarbeiter — Mitarbeiter einladen/deaktivieren/Rollen vergeben.
- truppen — Handwerker-Trupps pflegen.
- anbieter — Anbieter-Stammdaten + Sortiment-Pflege.
- snacks — Snacks & Getränke-Produkte, Lieferanten.
- abrechnung — Verzehr-/Einrichtungs-Abrechnungen einsehen.
- weiterbildung — Weiterbildungs-Typen, Pflicht-Zuweisungen, Feedback-Auswertung.
- dokumente — Dokumenten-Pyramide pflegen, Verteilungen.
- beauftragte — Beauftragten-Stellen anlegen/zuweisen.
- kvp — KVP-Einreichungen bearbeiten.
- beschwerde — Beschwerden bearbeiten.
- fahrtenbuch — Fahrzeug-Stammdaten + alle Fahrten lesen.
- fahrzeuge — Fahrzeug-Reservierungen + Konflikte verwalten.
- sitzungszimmer — Räume pflegen.
- tippspiel — WM-Tippspiel + Sondertipps.
- bike — Bike-to-Work-Challenge konfigurieren.
- kontakte — Interne Kontaktliste pflegen.
- chat-mod — Chat-Räume moderieren (Nachrichten löschen).
Die Liste ist als Snapshot Stand 2026-06-08 zu verstehen; die
produktive Quelle der Wahrheit ist die Konstante
VERWALTUNGS_KOMPETENZEN in
app/competences.py.
Funktionstrennung (Separation of Duties)
Bei Modulen mit Hinweisgeber-Charakter (KVP, Beschwerde, Beauftragten-Nachrichten) gilt zusätzlich zu den oben dokumentierten Berechtigungen folgende organisatorische Vorgabe, die vom Auftraggeber sicherzustellen ist:
- Selbst-Bearbeitungs-Ausschluss: Eine Person mit Verwaltungs-Kompetenz „kvp" oder „beschwerde" darf keine eigenen KVP-/Beschwerde-Einreichungen bearbeiten oder bewerten. Der Auftraggeber stellt durch interne Organisations-Anweisung sicher, dass im Bedarfsfall eine zweite Person mit derselben Kompetenz (oder der Admin) den Vorgang übernimmt.
- Beauftragten-Stellen: Eine Person, die einer Beauftragten-Stelle zugewiesen ist, sollte nicht zugleich die Verwaltungs-Kompetenz für dieselbe Stelle besitzen, um die Unabhängigkeit der Beauftragten-Funktion zu wahren.
- Vier-Augen-Prinzip bei kritischen Operationen: Massen-Lösch- und Massen-Export- Operationen sind technisch nur durch Admin auslösbar und werden im Audit-Log protokolliert; eine zweite Bestätigung durch eine weisungsbefugte Person des Auftraggebers ist gemäß AVV §6 Spiegelstrich 1 erforderlich.
Sonderfälle
- Standortbindung: Manager und Facility sehen nur Daten ihres zugeordneten Standorts. Regional-Manager sieht alle ihm zugeordneten Standorte.
- Trupp-Lead-Flag: Ein Tradesman mit Lead-
Flag (
CraftCrewMember.is_lead = true) bekommt zusätzlich Zugriff auf Trupp-interne Pflege (Mitglieder hinzufügen, Aufträge der Crew einsehen). - Gastkonto / Beirat: Externe Gast-Konten erhalten pro Konto fünf optionale Modul-Freischaltungen (Kalender, Mailliste, Telefonliste, Chat, Postfach) sowie ggf. eine Sichtbarkeits-Whitelist auf Standorte oder einzelne Mitarbeiter.
- Service-Toggle-Bypass für Admins: require_service_active lässt Admins explizit durch, damit ein Modul vorbereitet werden kann, bevor es mandantenseitig sichtbar geschaltet wird. Alle anderen Rollen bekommen 404 bei deaktiviertem Service.
Technische Verankerung
- Konstanten + Helfer-Funktionen:
app/models.py(Rollen-Konstanten,can_use_*-Funktionen),app/competences.py(Verwaltungs-Kompetenzen). - Drift-Test:
tests/test_role_map_routes.py— prüft die Rollen-Landkarte im Superadmin gegen die tatsächlich registrierten App-Routen. - Permission-Matrix-Tests:
tests/test_role_matrix.py(7-Rollen-Bestand),tests/test_role_matrix_extended.py(9 Rollen × neue Module, positive + negative Fälle). - Audit-Logs: Service-Toggle-Aktionen, Mandanten-Identität-
Änderungen, Welcome-Mail-Anpassungen sowie der Lifecycle-
Cron protokollieren ihre Aktionen in
/var/log/webapp-deploy.logbzw. dem Mandanten-spezifischen App-Log.
Pflege dieses Dokuments
Die Matrix ist Anlage zum AVV und wird bei jeder Änderung am Berechtigungskonzept aktualisiert. Insbesondere:
- Neue Rolle → Spalte ergänzen, alle Modul-Zeilen markieren.
- Neues Modul → Zeile ergänzen, alle Rollen-Spalten markieren.
- Änderung einer Berechtigung → Zelle aktualisieren + Datum in der Kopfzeile fortschreiben.
Drift wird automatisch durch die obigen Tests gemeldet — ein PR, der Permission-Code ändert, ohne diese Matrix anzufassen, fällt im CI auf.
© 2026 KiNi Solutions · Inhaber Stefan Eschbach · Lehmattweg 3,
79664 Wehr · info@kini.solutions
Anlage zum AVV · Querverweise:
TOM,
Modul-Matrix,
VVT.