{% extends "base.html" %} {% set active_page = "groups" %} {% block page_title %}Gruppen{% endblock %} {% block page_sub %}
{{ groups|length + 1 }} Gruppen · Rechteverwaltung
{% endblock %} {% block content %} {# Rendert einen Bereich (Geräte/Logs/Einstellungen) als kompakte, schmale Spalte: eigene Kopfzeile mit Bereichsname + einem Kästchen (der Kill-Switch, "Bereich sichtbar"), darunter eine kleine Tabelle mit den Unterpunkten (Clients, Switche, ...) als Zeilen und nur den für diesen Bereich tatsächlich genutzten Rechten (group_row_types[group_key]) als Spalten — Logs/Einstellungen zeigen z.B. nur R/W/E, nur Geräte zeigt zusätzlich D (PoE-Neustart über Dashboard, ausschließlich bei Clients). "Ändern" (E) deckt Löschen überall mit ab — es gibt nirgends ein eigenes Löschen-Recht. Zellen ohne passendes Recht für die jeweilige Zeile (z.B. "D" bei Switche/Zugangsdaten) werden als ausgegraute, nicht anklickbare Checkbox dargestellt statt zu fehlen — dadurch bleiben alle Spalten bündig untereinander. readonly=true zeigt nur den aktuellen Stand (Admin/Systemgruppen bzw. fehlendes groups.edit). Die JS-Funktion applyPermissionGating() sperrt Kind-Rechte, solange das Bereich-Lesen (Kill-Switch) nicht gesetzt ist. Mehrere Bereiche stehen per Flexbox nebeneinander (siehe .permission-groups-row), damit die ganze Rechteübersicht einer Gruppe in einer kompakten Zeile Platz hat. #} {% macro permission_table(group, group_key, checked_keys, readonly) %} {% set row_types = group_row_types[group_key] %}
{% for row_key, row_letter, row_label in row_types %} {% endfor %} {% for child_key, child in group['children'].items() %} {% for row_key, row_letter, row_label in row_types %} {% set perm_key = child['rows'].get(row_key) %} {% endfor %} {% endfor %}
{{ row_letter }}
{{ child['label'] }} {% if perm_key %} {% else %} {% endif %}
{% endmacro %} {# compact=true (Gruppen-Dropdown auf der Hauptseite) verkleinert Zellen- Padding/Abstände gegenüber dem "Neue Gruppe"-Modal (compact=false, bleibt unverändert) — gleicher Aufbau, nur enger, da im Dropdown mehr Breite zur Verfügung steht als im schmalen Modal und es sonst auseinandergezogen wirkt. #} {% macro permission_tree(checked_keys, readonly, compact=false) %}
{% for group_key, group in permission_catalog.items() %} {{ permission_table(group, group_key, checked_keys, readonly) }} {% endfor %}
R = Read (Lesen) · W = Write (Anlegen) · E = Edit (Ändern, inkl. Löschen) · D = Dashboard (PoE-Neustart über das Dashboard-Popup, nur bei Clients)
{% endmacro %}

Gruppen

Über Gruppen lassen sich Rechte für jeden Bereich der App granular vergeben. Ein Benutzer kann mehreren Gruppen angehören — die Rechte addieren sich. Auf „Rechte“ klicken, um eine Gruppe aufzuklappen und die Berechtigungen im Detail zu sehen bzw. zu ändern. „Admin“ und „Benutzer“ sind feste Systemgruppen und nicht veränderbar. Das Kästchen neben dem Bereichsnamen (Geräte/Logs/Einstellungen) muss gesetzt sein, bevor die Rechte darunter greifen — automatische Neustarts bei Ausfall bleiben von „D“ unberührt. Legende direkt bei den Rechten.
{% if current_user.has_permission('groups.create') %} {% endif %}
{% for g in groups %} {% set can_edit_this = current_user.has_permission('groups.edit') and not g.is_system %} {% else %} {% endfor %}
Gruppe Mitglieder Aktionen
Admin Systemrolle {{ admin_virtual_group.member_names|length }}
{{ g.name }} {% if g.is_system %}Standard{% endif %} {{ g.member_names|length }}
{% if current_user.has_permission('groups.edit') and not g.is_default and not g.is_system %}
{% endif %}
Noch keine weiteren Gruppen angelegt.
{% for g in groups %} {% endfor %} {% endblock %} {% block scripts %} {% endblock %}