Quick Win

Matrix42: Berechtigungen nach Relevanz sortieren im Objekte berechtigen-Wizard

Configuration Items im Objekte berechtigen-Wizard nach Berechtigungsstufe statt alphabetisch sortieren – mit JavaScript im Layout Designer.

Torben Soennecken 24. Januar 2025

Das Zuweisen und Überprüfen von Berechtigungen ist ein zentraler Teil der Matrix42-Administration. Der Standard-Wizard „Objekte berechtigen” listet alle Configuration Items alphabetisch auf. Kritische Berechtigungen wie Lösch- oder Schreibrechte gehen dabei schnell unter.

Dieser Quick Win zeigt, wie wir den Wizard mit einer einfachen Anpassung verbessern: Ein kurzes JavaScript-Snippet sortiert Berechtigungen nach Kritikalität – die wichtigsten Rechte erscheinen dann immer oben.

Die Herausforderung: Alphabetische Sortierung erschwert die Analyse

In Matrix42 sind Berechtigungen an Benutzerrollen gekoppelt. Um die Rechte einer Rolle einzusehen oder zu ändern, führt der Weg über:

Administration → Sicherheit → Benutzerrollen

Dort wird die entsprechende Rolle geöffnet und die Aktion „Objekte berechtigen” ausgewählt.

Das Problem: Die Ansicht listet alle Configuration Items alphabetisch auf. Um herauszufinden, für welche Objekte Lese-, Schreib-, Erstell- oder Löschrechte vergeben wurden, muss die gesamte Liste durchsucht werden. Eine schnelle Analyse ist so nicht möglich.

Die Lösung: Sortierung nach Berechtigungsstufe

Wir passen den Wizard so an, dass Einträge mit den höchsten Berechtigungen (z. B. Löschen) ganz oben erscheinen. Dafür nutzen wir den Layout Designer und ein JavaScript-Snippet.

1. Layout Designer öffnen

  1. Zur gewünschten Benutzerrolle navigieren
  2. Den „Objekte berechtigen”-Wizard öffnen
  3. Im Drei-Punkte-Menü (oben rechts) „Layout ändern” wählen

Matrix42 öffnet den Wizard im Layout Designer.

2. Datenquelle der Listenansicht anpassen

Im Layout Designer ist die Struktur des Wizards sichtbar:

  1. Das Steuerelement auswählen, das die Liste der Einträge („Entities”) darstellt
  2. Die Variable return.Entities für die Positionen wählen
  3. Im Eigenschaftsfenster in den „Erweiterten Modus” wechseln

Hier implementieren wir die Sortierlogik.

3. JavaScript: Permission Score und Sortierfunktion

Das Ziel: Jede Berechtigungsstufe erhält einen numerischen Wert. Löschrechte sind kritischer als Leserechte und bekommen einen höheren Wert.

Zwei JavaScript-Funktionen werden benötigt:

  • Funktion 1 berechnet einen „Permission Score”: Sie prüft, welche Rechte (delete, create, write, read) vergeben sind und summiert die Werte.
  • Funktion 2 sortiert die Liste basierend auf dem Score (absteigend).
/**
 * Berechnet einen numerischen Score basierend auf den Berechtigungen.
 * Gewichtung: FullAccess: 16, DeleteAccess: 7, CreateAccess: 4, 
 *             WriteAccess: 2, ReadAccess: 1.
 * @param {object} entry - Der zu bewertende Eintrag.
 * @returns {number} - Der berechnete Permission Score.
 */
function calculatePermissionScore(entry) {
    const p = entry.Permission;
    if (!p) {
        return 0;
    }
    if (p.FullAccess) {
        return 16;
    }
    let score = 0;
    if (p.DeleteAccess) score += 7;
    if (p.CreateAccess) score += 4;
    if (p.WriteAccess) score += 2;
    if (p.ReadAccess) score += 1;
    return score;
}

/**
 * Sortiert eine Liste von Einträgen absteigend nach Permission Score.
 * @param {object[]} entries - Das Array der zu sortierenden Einträge.
 * @returns {object[]} Ein neues Array mit den sortierten Einträgen.
 */
function sortEntriesByPermissions(entries) {
    const sortedEntries = [...entries];
    sortedEntries.sort((a, b) => {
        const scoreA = calculatePermissionScore(a);
        const scoreB = calculatePermissionScore(b);
        return scoreB - scoreA; // Absteigend sortieren
    });
    return sortedEntries;
}

if (!$value) {
    return [];
}
return sortEntriesByPermissions($value);

4. Änderungen publizieren

Nach dem Einfügen der Logik den Wizard speichern und (ggf.) publizieren. Beim nächsten Öffnen des „Objekte berechtigen”-Dialogs ist die Liste nach Relevanz sortiert.

Praktischer Nutzen

Diese Anpassung bringt direkten Mehrwert für die tägliche Administration:

AspektVerbesserung
Schnellere AdministrationBerechtigungen werden schneller gefunden – kein Scrollen durch lange Listen.
Bessere ÜbersichtKritische Berechtigungen (Löschen, Vollzugriff) erscheinen sofort oben.
Einfachere AuditsBei Compliance-Prüfungen liegt der Fokus direkt auf den wichtigsten Berechtigungen.

Zusammenfassung

Mit wenigen Zeilen JavaScript wird der „Objekte berechtigen”-Wizard deutlich übersichtlicher. Statt alphabetischer Listen zeigt die Ansicht Berechtigungen nach Kritikalität sortiert – ein kleiner Eingriff mit großer Wirkung.

Häufig gestellte Fragen

Funktioniert die Anpassung auch nach Matrix42-Updates?

Ja, die Änderung wird im Layout gespeichert und bleibt nach Updates erhalten. Bei größeren Versionssprüngen empfiehlt sich eine kurze Überprüfung.

Wie werden die Berechtigungsstufen gewichtet?

Die Gewichtung im Code: FullAccess = 16, DeleteAccess = 7, CreateAccess = 4, WriteAccess = 2, ReadAccess = 1. Die Werte werden addiert, sodass kombinierte Berechtigungen höher ranken.

Kann ich die Gewichtung anpassen?

Ja, die Zahlenwerte in der Funktion calculatePermissionScore können beliebig angepasst werden, um andere Priorisierungen abzubilden.

Wirkt sich die Sortierung auf die Performance aus?

Nein, die Sortierung erfolgt clientseitig beim Öffnen des Wizards und hat keine messbaren Auswirkungen auf die Systemperformance.

Wo finde ich den Objekte berechtigen-Wizard?

Der Pfad lautet: Administration → Sicherheit → Benutzerrollen → [Rolle auswählen] → Aktion „Objekte berechtigen”.

Noch Fragen zur Konfiguration?

Unsere Engineers stehen gerne zur Verfügung, um bei der Einrichtung oder Anpassung zu helfen.

Wir antworten in der Regel innerhalb von 24h.

War dieser Artikel hilfreich?

Wir freuen uns über Feedback.