{% 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

Rechte je Gruppe granular vergeben, Mitgliedschaft in mehreren Gruppen addiert sich. „Admin“ und „Benutzer“ sind feste Systemgruppen. 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 %}