Files

10 KiB
Raw Permalink Blame History

Phase 15: Modul-Berechtigungen: Gruppen & User-Grants - Discussion Log

Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

Date: 2026-08-04 Phase: 15-modul-berechtigungen-gruppen-user-grants Areas discussed: Grundsatzentscheidungen (vor Roadmap-Eintrag), Sperr-Verhalten im Portal, Standard-Zuweisungen, Admin-UI Ort & Form, AD-Bindung & Sync-Semantik, Nachfragen (Widgets, Löschen, Protokoll)


Grundsatzentscheidungen (vor dem Roadmap-Eintrag geklärt)

Herkunft der Gruppen

Option Description Selected
Beides: Tessera-Gruppen mit optionaler AD-Bindung Group-Model mit manuellen Mitgliedern, optional ldapDn — deckt Mandanten mit und ohne AD ab ✓
Nur Tessera-eigene Gruppen Ausschließlich im Admin-UI gepflegt, kein memberOf-Sync
Nur AD-Gruppen Gruppen 1:1 aus dem AD, kein manuelles Anlegen

User's choice: Tessera-Gruppen mit optionaler AD-Bindung

Default ohne Freigabe

Option Description Selected
Offen, Einschränkung pro Modul aktivierbar Ohne Grants sehen alle Nutzer des Mandanten das Modul (heutiges Verhalten)
Geschlossen — Freigabe immer nötig Tenant-Aktivierung ist nur Voraussetzung, jeder User braucht Grant ✓

User's choice: Geschlossen Notes: Lockout-Risiko wurde benannt; die Migration mit Gruppe „Alle Benutzer" wurde als Gegenmaßnahme vereinbart.

Admin-Bypass

Option Description Selected
ADMIN + SUPER_ADMIN sehen alles Aktive Admins umgehen Grants im eigenen Mandanten ✓
Nur SUPER_ADMIN umgeht Mandanten-Admins unterliegen selbst den Grants
Niemand umgeht Grants gelten für alle

User's choice: ADMIN + SUPER_ADMIN

Tiefe der Berechtigung

Option Description Selected
Nur Modul-Zugriff (an/aus) Grant entscheidet nur über Sichtbarkeit und API-Nutzung ✓
Zugriff + Rechtestufen pro Modul Zusätzlich read/write/admin je Grant, von jedem Modul auszuwerten

User's choice: Nur Zugriff an/aus


Sperr-Verhalten im Portal

Direktaufruf einer nicht freigegebenen Modul-URL

Option Description Selected
403-Seite mit Hinweis „Kein Zugriff — wende dich an deinen Administrator" ✓
Weiterleitung aufs Dashboard Stiller Redirect ohne Meldung
404 — Existenz verbergen Verrät nichts über vorhandene Module, erschwert Support

User's choice: 403-Seite mit Hinweis

Sichtbarkeit im Marketplace

Option Description Selected
Sichtbar mit Badge „Kein Zugriff" Katalog bleibt vollständig, gesperrte Module gekennzeichnet ✓
Komplett ausblenden Marketplace zeigt nur Nutzbares
Nur für Admins gefiltert Gleiche Filterung wie Sidebar, ohne Sonderdarstellung

User's choice: Sichtbar mit Badge

Wirksamkeit eines Entzugs bei aktiver Session

Option Description Selected
Beim nächsten Seitenaufruf API sperrt sofort, Sidebar zieht beim Laden nach ✓
Sidebar pollt regelmäßig Entzug wird ohne Reload sichtbar, kostet Extra-Last

User's choice: Beim nächsten Seitenaufruf


Standard-Zuweisungen

Freigabe-Default beim Aktivieren eines Moduls

Option Description Selected
Automatisch für „Alle Benutzer" Aktivieren genügt, Einschränkung nachträglich
Zunächst niemand außer Admins Jede Freigabe ist ein bewusster zweiter Schritt
Admin wird beim Aktivieren gefragt Dialog: sofort freigeben oder erst konfigurieren ✓

User's choice: Dialog beim Aktivieren Notes: Der bisher einfache Aktiv-Toggle in /admin/modules bekommt damit eine Rückfrage.

Neu angelegter Benutzer

Option Description Selected
Ja, automatisch in die Standardgruppe Neue Benutzer sofort arbeitsfähig ✓
Nein, ohne Gruppe starten Admin weist bewusst zu
Checkbox im Anlegen-Formular Vorbelegt auf ja, abwählbar

User's choice: Automatisch

Per LDAP importierter Benutzer

Option Description Selected
Genauso wie manuell angelegte Eine Regel für beide Herkünfte ✓
Nur über AD-gebundene Gruppen Ausschließlich Mitgliedschaften aus dem AD

User's choice: Genauso wie manuell angelegte

Status der Gruppe „Alle Benutzer"

Option Description Selected
Geschützte Systemgruppe Nicht löschbar, nicht umbenennbar
Ganz normale Gruppe Frei bearbeitbar, umbenennbar, löschbar ✓

User's choice: Normale Gruppe Notes: Diese Wahl warf die Folgefrage auf, wie der Automatismus aus D-11/D-12 sein Ziel findet — beantwortet über die Markierung „Standardgruppe" (D-13).


Admin-UI: Ort & Form

Ort der Gruppenverwaltung

Option Description Selected
Eigener Punkt /admin/groups Sechster Eintrag neben den bestehenden Admin-Seiten ✓
Als Tab in /admin/users Benutzer und Gruppen auf einer Seite

User's choice: Eigener Punkt /admin/groups

Ort der Freigabe-Matrix

Option Description Selected
Eigene Matrix-Seite Tabelle Module × Gruppen, gesamter Stand auf einen Blick ✓
Pro Modul in /admin/modules Aufklappbare Freigabeliste je Modul
Pro Gruppe in der Gruppenverwaltung Modulliste zum Ankreuzen je Gruppe

User's choice: Eigene Matrix-Seite

Einzel-Freigaben für Benutzer

Option Description Selected
Beim Benutzer in /admin/users Sektion „Zusätzliche Modulfreigaben" plus geerbte Rechte ✓
In derselben Matrix wie Gruppen Benutzer als zusätzliche Spalten
Nur über Gruppen — keine Einzelfreigaben Reduktion des Phasenziels

User's choice: Beim Benutzer in /admin/users

Ziel des Auto-Beitritts

Option Description Selected
Markierung „Standardgruppe" Genau eine Gruppe pro Mandant, umhängbar und abschaltbar ✓
Fest an den Namen „Alle Benutzer" gebunden Bricht still beim Umbenennen
Gar kein Automatismus Widerspricht D-11/D-12

User's choice: Markierung „Standardgruppe"


AD-Bindung & Sync-Semantik

Auswahl der AD-Gruppe

Option Description Selected
Aus dem AD browsen Bestehende Gruppensuche im LDAP-Service wiederverwenden ✓
DN manuell eintippen Einfaches Textfeld, verlangt exakte DN-Kenntnis
Browsen mit manueller Korrektur Liste plus editierbares Feld

User's choice: Aus dem AD browsen

Benutzer verlässt die AD-Gruppe

Option Description Selected
Mitgliedschaft entfernen Nur die LDAP-Mitgliedschaft fällt weg, manuelle bleiben ✓
Behalten und markieren Bleibt bestehen, wird als „nicht mehr im AD" gekennzeichnet

User's choice: Mitgliedschaft entfernen

Manuelle Mitglieder in gebundenen Gruppen

Option Description Selected
Ja, beide Quellen nebeneinander Mitgliedschaft merkt sich Herkunft MANUAL/LDAP ✓
Nein, gebundene Gruppen sind reine AD-Spiegel Jede Ausnahme braucht eine zweite Gruppe

User's choice: Beide Quellen nebeneinander

Zeitpunkt des Gruppen-Syncs

Option Description Selected
Immer mit dem Benutzer-Sync memberOf im selben Durchlauf, ein Vorgang ✓
Eigener Gruppen-Sync-Button Getrennte Auslösung, zwei Stände

User's choice: Immer mit dem Benutzer-Sync


Nachfragen: Widgets, Löschen, Protokoll

Widgets gesperrter Module

Option Description Selected
Nein — außerhalb dieser Phase Widgets sind heute modulunabhängig, Zuordnung wäre neue Fähigkeit
Ja — Zuordnung mitbauen Widget-Typen bekommen Modul-Bezug, gesperrte Widgets verschwinden ✓

User's choice: Zuordnung mitbauen Notes: Erweitert die Phase gegenüber den ursprünglichen sechs Success Criteria der Roadmap um Schema, Migration und Dashboard-Logik.

Löschen einer belegten Gruppe

Option Description Selected
Warnung mit Zahlen, dann kaskadieren Dialog nennt Mitglieder- und Freigabenanzahl ✓
Kommentarlos kaskadieren Ohne Rückfrage
Löschen sperren, solange belegt Gruppe muss erst geleert werden

User's choice: Warnung mit Zahlen, dann kaskadieren

Protokollierung von Freigabeänderungen

Option Description Selected
Ja, in der Datenbank mit Anzeige Eigene Tabelle, im Admin-UI einsehbar
Nur ins Server-Log Kein DB-Eintrag, keine UI-Ansicht ✓
Vorerst gar nicht Kein Protokoll in dieser Phase

User's choice: Nur ins Server-Log


Claude's Discretion

  • Schema-Details der neuen Modelle (Feldnamen, Indizes, Kaskaden, Erzwingung der Entweder-oder-Beziehung bei ModuleGrant)
  • Aufbau und Ort der Zugriffsauflösung im NestJS-Code, inklusive etwaigem Request-Caching
  • Migrationstechnik: Prisma-Migration mit Datenschritt oder separates Seed-Skript
  • Darstellung der Matrix bei vielen Modulen und Gruppen
  • Namensraum und Schnitt der i18n-Keys
  • Mechanik der Widget-Typ-→-Modul-Zuordnung (statische Registrierung oder DB-Feld)

Deferred Ideas

  • Rechtestufen innerhalb eines Moduls (read/write/admin pro Grant)
  • Self-Service „Zugriff anfragen" aus dem Marketplace inklusive Genehmigungsfluss
  • Audit-Trail für Berechtigungsänderungen in der Datenbank mit Ansicht im Admin-UI
  • Mehrfach-Mandantenzugehörigkeit eines Benutzers (offen seit Phase 2, D-09)