Rolleneditor: eigene Rollen neben den Standardrollen
Rechte sind jetzt die Grundgröße, eine Rolle ist ein benanntes Bündel davon. Die elf Standardrollen stehen weiterhin im Code und sind unveränderlich – Prüfvermerke und Bescheinigungen berufen sich auf sie. Daneben lassen sich eigene Rollen anlegen. Rolleneditor unter Verwaltung > Rollen & Rechte - Rolle aus einer Standardrolle als Vorlage ableiten oder von Grund auf anlegen - Rechte nach Modul gruppiert ankreuzen, mit Sammelschaltern je Gruppe - Seite des Bauvertrags festlegen (Auftraggeber / Auftragnehmer / Zuarbeit) – bestimmt die Datensicht, unabhängig von der Rechteliste - bearbeiten, stilllegen, löschen; die Rechtematrix zeigt eigene Rollen mit an Grenzen - Administrationsrechte sind nicht über eine Rolle vergebbar, sonst ließe sich über eine selbst gebaute Rolle die Benutzerverwaltung erreichen - eine Rolle ohne jedes Recht wird abgelehnt - eine vergebene Rolle lässt sich weder stilllegen noch löschen - die Vier-Augen-Trennung bleibt unabhängig von der Rolle bestehen Umbau der Rechteauswertung - Rechte werden an genau einer Stelle ermittelt: rechteImProjekt() führt Standardrollen und eigene Rollen zu einer Rechtelage zusammen, die Seiten und Server Actions über rechte.darf() bzw. rechte.pruefe() befragen - die Firmenschranke hängt nun an der Seite des Bauvertrags, die jede Rolle mitbringt, statt an einer festen Liste privilegierter Standardrollen - ProjectMember trägt wahlweise eine Standardrolle oder eine eigene Rolle Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8af6b384ea
commit
84eb93c59f
@@ -142,7 +142,12 @@ eingegrenzt.
|
||||
|
||||
### Vollständige Matrix
|
||||
|
||||
Quelle ist `app/src/lib/rbac.ts`; die Tabelle ist von dort erzeugt.
|
||||
Quelle ist `app/src/lib/rbac.ts`; die Tabelle ist von dort erzeugt. In der Anwendung
|
||||
zeigt *Verwaltung → Rollen & Rechte* dieselbe Matrix, dort um die eigenen Rollen ergänzt.
|
||||
|
||||
Ausgewertet werden Rechte an genau einer Stelle: `rechteImProjekt()` führt Standardrollen
|
||||
und eigene Rollen zu einer `Rechtelage` zusammen, die jede Seite und jede Server Action
|
||||
über `rechte.darf(...)` bzw. `rechte.pruefe(...)` befragt.
|
||||
|
||||
Spalte AN zeigt das Rollenrecht; ein `(○)` bedeutet: greift zusätzlich nur, wenn der
|
||||
passende Projektschalter gesetzt ist (siehe Abschnitt *Je Projekt einstellbar*).
|
||||
@@ -202,8 +207,9 @@ Bauherrn – einstellbar beim Anlegen und jederzeit unter *Projekt → Einstellu
|
||||
**Diese Schalter steuern ausschließlich die Sichtbarkeit von Bereichen, niemals den
|
||||
Datenumfang.** Ein Auftragnehmer sieht in jedem Fall nur Verträge, Aufmaße,
|
||||
Stundenzettel und Rechnungen der eigenen Firma. Diese Schranke hängt allein an der
|
||||
Rolle (`isExternalOnly()` in `src/lib/rbac.ts`) und ist durch keine Einstellung
|
||||
aufhebbar; die Datenbankabfragen filtern zusätzlich auf `companyId`.
|
||||
**Seite des Bauvertrags**, die jede Rolle mitbringt (`Rechtelage.nurEigeneFirma` in
|
||||
`src/lib/rbac.ts`), und ist durch keine Einstellung aufhebbar; die Datenbankabfragen
|
||||
filtern zusätzlich auf `companyId`.
|
||||
|
||||
Bewusst nicht geschaltet: Der Reiter **Beteiligte** zeigt allen Projektbeteiligten,
|
||||
welche Firmen und Personen mitwirken. Das entspricht Position B.I 0 der
|
||||
@@ -238,7 +244,7 @@ Unter *Verwaltung* (nur für Zugänge mit Administrationsrecht), in vier Reitern
|
||||
|---|---|
|
||||
| **Benutzer** | Zugänge anlegen, bearbeiten, sperren und entsperren, Kennwort zurücksetzen |
|
||||
| **Firmen** | Firmenstamm mit Art, Anschrift, Kreditorennummer und USt-IdNr. |
|
||||
| **Rollen & Rechte** | Legende aller Rollen und die vollständige Rechtematrix – unmittelbar aus `rbac.ts` erzeugt und damit nie veraltet |
|
||||
| **Rollen & Rechte** | Rolleneditor für eigene Rollen, Legende aller Rollen und die vollständige Rechtematrix |
|
||||
| **Protokoll** | Alle Vorgänge mit Filter nach Aktion und Person |
|
||||
|
||||
**Kennwörter.** Beim Anlegen wird ein Startkennwort erzeugt und **genau einmal** angezeigt
|
||||
@@ -260,6 +266,40 @@ Firmen mit bestehenden Verträgen lassen sich nicht stilllegen.
|
||||
*Einstellungen → Beteiligte*. Das Administrationsrecht ist davon unabhängig und wirkt
|
||||
projektübergreifend – entsprechend sparsam vergeben.
|
||||
|
||||
### Eigene Rollen
|
||||
|
||||
Die **elf Standardrollen sind Teil des Programms** – sie bilden den Vorgabeprozess ab und
|
||||
lassen sich weder ändern noch löschen. Prüfvermerke und Bescheinigungen berufen sich auf
|
||||
sie; ein nachträglich verändertes Rollenverständnis würde die Nachvollziehbarkeit alter
|
||||
Vorgänge zerstören.
|
||||
|
||||
Zusätzliche Rollen entstehen unter *Verwaltung → Rollen & Rechte → Rolle anlegen*:
|
||||
|
||||
1. **Vorlage wählen** (optional) – übernimmt Rechte und Seite einer Standardrolle als
|
||||
Ausgangspunkt. Ohne Vorlage beginnt man bei null.
|
||||
2. **Seite des Bauvertrags festlegen** – Auftraggeberseite (sieht das ganze Projekt) oder
|
||||
Auftragnehmerseite bzw. Zuarbeit (sieht ausschließlich die eigene Firma). Das ist die
|
||||
folgenreichste Angabe: Sie bestimmt die Datensicht, nicht die Rechteliste.
|
||||
3. **Rechte ankreuzen** – gruppiert nach Modul, mit Sammelschaltern je Gruppe.
|
||||
|
||||
Typischer Anlass: eine Bauüberwachung, die das Bautagebuch führt und Stunden anerkennt,
|
||||
aber die sachliche Richtigkeit nicht bescheinigen soll. Vorlage *Bauüberwacher Bahn*
|
||||
wählen, das Recht *sachlich richtig bescheinigen* abwählen, fertig.
|
||||
|
||||
Eigene Rollen werden im Projekt unter *Einstellungen → Beteiligte* genauso vergeben wie
|
||||
Standardrollen und erscheinen in allen Rechteübersichten mit dem Vermerk „eigene Rolle".
|
||||
|
||||
**Grenzen, die auch der Rolleneditor nicht überschreitet:**
|
||||
|
||||
- **Administrationsrechte** (Benutzerverwaltung, Firmenstamm, Protokoll) lassen sich nicht
|
||||
über eine Rolle vergeben – sonst käme man über eine selbst gebaute Rolle an die
|
||||
Benutzerverwaltung und damit an jede andere Schranke. Sie werden ausschließlich am Zugang
|
||||
gesetzt.
|
||||
- Eine Rolle **ohne jedes Recht** wird abgelehnt.
|
||||
- Eine Rolle, die **noch vergeben ist**, lässt sich weder stilllegen noch löschen.
|
||||
- Die Vier-Augen-Trennung bleibt: Wer *sachlich richtig* bescheinigt hat, kann dieselbe
|
||||
Rechnung nicht *rechnerisch richtig* bescheinigen – unabhängig von der Rolle.
|
||||
|
||||
### Absichtliche Sperren
|
||||
|
||||
Diese Einschränkungen sind keine Lücken, sondern Zweck der Sache:
|
||||
|
||||
Reference in New Issue
Block a user