Zum Inhalt springen

Zugriffsrechte

Zugriffsrechte (ACL-Regeln) steuern, welche Personen oder Mitglieder ein Objekt lesen, bearbeiten, löschen oder anderweitig benutzen dürfen. Dieser Abschnitt beschreibt den Dialog Zugriffsrecht erstellen / Zugriffsrecht bearbeiten auf dem Tab Zugriffsrechte eines Objekts.

  1. Objekt öffnen (z. B. Dossier, Ordner, Person).
  2. Im Seitenmenü den Eintrag Zugriffsrechte wählen.
  3. Über Hinzufügen eine neue Regel erstellen oder eine bestehende Regel markieren und Bearbeiten klicken.

Der Dialog öffnet sich als Seitenpanel.

Gibt an, für welche Personen oder Gruppen die Regel gilt:

  • Jeder — gilt für alle angemeldeten Benutzer.
  • Eigene Person — gilt für den Besitzer des Objekts.
  • Eigene Mitglieder — gilt für alle als Mitglied eingetragenen Personen des Objekts.
  • Person — gilt für eine einzelne, gezielt ausgewählte Person.
  • Mitglieder von Objekt — gilt für alle Mitglieder eines anderen referenzierten Objekts (z. B. Schulklasse, Zugriffsgruppe).

Genau eine dieser Optionen muss gewählt sein.

Jedes Recht kann auf einen von drei Zuständen gesetzt werden:

  • Erlaubt — Recht wird ausdrücklich gewährt.
  • Verboten — Recht wird ausdrücklich entzogen (schlägt Erlaubt).
  • Nicht definiert — Regel trifft für dieses Recht keine Aussage (Vererbung wirkt weiter).

Wird ein Recht auf Erlaubt gesetzt, werden abhängige Rechte automatisch mitgesetzt:

  • Bearbeiten setzt Lesen auf Erlaubt.
  • Löschen, Einfügen und Status ändern setzen Bearbeiten und Lesen auf Erlaubt.
CodeAnzeigenameBedeutung
READLesenObjekt sehen und öffnen
UPDATEBearbeitenFelder des Objekts ändern
DELETELöschenObjekt löschen
INSERTEinfügenUnterobjekte anlegen
PROCESSVerarbeitenObjekt-Aktionen ausführen
STATUSStatus ändernObjektstatus wechseln (aktiv, archiviert …)
TAGTags setzen und ändernTags zuordnen
READALLAlles lesenAuch inaktive und ungültige Objekte lesen
READSPECIALSpezielle Daten lesenGeschützte Felder lesen
READFILEDateien lesenOriginaldatei herunterladen
READMEMBERMitglieder lesenMitgliedschaften des Objekts einsehen
READACCOUNTINGVerrechnung lesenVerrechnungs-Daten einsehen
READCALENDARKalender lesenKalendereinträge lesen
UPDATECALENDARKalender bearbeitenKalendereinträge bearbeiten
  • Beschreibung — Freitext, zur Dokumentation der Regel.
  • ACL-Code — technischer Code, optional (für Import/Export und Regel-Referenzen).
  • Rekursiv — Regel wirkt auch auf alle untergeordneten Objekte (Standard: aktiv).
  • Nur auf untergeordnete Objekte anwenden — Regel gilt ausschliesslich für die Kinder, nicht für das Objekt selbst.

Dieser Abschnitt ist für Entwickler und Administratoren.

Die Liste der im Dialog angezeigten Rechte wird zur Laufzeit aus der Tabelle Object.AclRightDefs via GraphQL-Query aclRightDefs geladen. Reihenfolge richtet sich nach ORDERNR, der angezeigte Name nach RIGHTNAME.

  • Backend-Entity: libs/core/api/src/auth/entity/AclRightDefs.ts — TypeORM/TypeGraphQL-Mapping auf Object.AclRightDefs.
  • Resolver: libs/core/api/src/auth/resolver/AclRightDefsResolver.ts — liefert die Query aclRightDefs.
  • Frontend-Service: libs/module/object/gui/src/object/form/object-detail-acls/services/acl-right-defs.service.ts (AclRightDefsService) — cached die Liste und stellt ein Signal zur Verfügung.
  • Enum bleibt bestehen: libs/core/api/src/auth/enum/AccessRight.ts — wird weiter als Typ-Constraint für Backend-Logik und die Abhängigkeits-Regeln im Dialog (Update→Read, Delete/Insert/Status→Update) genutzt.

Persistiert werden die Rechte pro ACL-Regel in der Tabelle Object.AclRight (Spalten AclID, AclRight, State), referenziert gegen die Stammtabelle Object.AclRightDefs.

  1. Zeile in Object.AclRightDefs per Migration (Database/Scripts/ChangelogAtoms/) einfügen — Felder AclRight, RightName, OrderNr, Relevance.
  2. Falls das Recht in Backend-Logik (Auth-Checks, Dependency-Regeln im rights-grid) referenziert werden soll: Wert im Enum AccessRight ergänzen.
  3. Kein Frontend-Deploy nötig, damit das Recht im Dialog erscheint — es reicht die Migration.

RIGHTNAME ist aktuell nur auf Deutsch. Eine separate Übersetzungs-Tabelle (AclRightDefTranslate o. ä.) ist geplant; bis dahin erscheint der DB-Wert direkt im Dialog.