Funktionsberechtigungen – Systembeschreibung

Speichern der benutzerbezogenen Zuweisungszeilen, der Ersetzungsmodus beim Laden eines Tarifs, die alten Gruppenmatrix-Endpunkte und Besonderheiten der Berechtigungsprüfung.

Überblick

Zuweisung der Funktionsberechtigungen (Ebene 2) je Benutzer, die alte Gruppenmatrix und das Laden eines Tarifs auf einen Benutzer. Der Menüpunkt erscheint nur dem Super-Admin. Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation.

Liste und Formular

  • Liste (permission): eine Zeile je Benutzer – Name, Gruppe, Status, aktive und gesamte manuelle Zeilen, letzte Ergänzung.
  • form: Benutzerauswahl (alle Basisbenutzer), alle user_feature-Zeilen des Benutzers (alle Quellen), die geladene Tarifwahl (selection), Definitionen und ihre Tarife.
  • featuresearch: findet jede aktive Funktion unabhängig von der Einstufung, höchstens 12 Treffer (nach Route, Schlüssel, Name, Modul). Die rechte Spalte zeigt nur vorhandene Zeilen.
  • functiontree: Baum Menügruppe → Liste → Funktion, nur mit den Routen aus MENU_GROUPS; das Formular lädt ihn nicht.

Speichern (saveUserFeatureRows())

  1. Je Zeile: access_mode, offer_definition_id, Limit (count, amount, metered, unlimited), Einheitspreis, enthaltene Menge, Mehrverbrauchspreis, Rabatt, Währung, Datumsfenster.
  2. Bestehende Zeile UPDATE (bei Änderung is_override = 1), neue Zeile INSERT mit source = 'manual'.
  3. Jede Zeile des Benutzers, die nicht im POST steht, wird GELÖSCHT, unabhängig von der Quelle.
  4. Bei abgeschnittenem POST (Abweichung von rows_count) wird nichts gespeichert (error_truncated).
  5. Danach syncCoreRouteAccess() und Rücklese-Prüfung der Zeilen (warning_not_persisted + Protokoll).

deactivateuser: löscht alle manual-Zeilen des/der Benutzer. togglestate: Dlbtprovision::setEnabled().

Tarif laden (generate, SYSTEM)

planpreview: getPlanPreviewRows() → Zeilen aus Dlbtprovision::resolveTemplate(), ohne Schreiben. generate: materialise(user, def, plan, from, to, admin, 'subscription') im ERSETZUNGSMODUS – jede nicht im Tarif enthaltene Zeile wird gelöscht (auch manual und is_override). Berechtigung: Super oder Basis-Zugriff (Vorschau) bzw. Ändern (Speichern) UND canAction(generate).

Alte Gruppen-Endpunkte

permission.matrix (Gruppenvorlagen-Matrix; Basis-Zugriff oder Super), permission.permissions (Auswahl einer Gruppe; Zugriff), permission.groupsave (Ändern: Routenrechte der Gruppe, Abgleich Liste und Zugriff, Gruppen-Vorlagenzeilen mit Quelle role und Datumsfenster), permission.install (Ändern: Tabellen und Seed des Moduls).

Berechtigungen und Einschränkungen

  • Liste und Formular verlangen das Basis-Routenrecht (Zugriff, Ändern) oder Super-Admin; im Seed ist list UNMAPPED, der Controller prüft es aber nicht.
  • Die Schaltfläche add fragt canAction(add), der Schlüssel steht jedoch nicht im Stamm, daher ist das Ergebnis für Nicht-Super-Benutzer falsch.
  • Einen Inhaltsbereich (wessen Rechte man bearbeiten darf) gibt es nicht.