Version 2.5.2: Wartung ist auch in der Rechtematrix ein eigener Bereich

This commit is contained in:
alientim committed 2026-09-11 20:16:37 +02:00
1 parent d3c700283a
commit 07ae69e3b7
6 files changed
+42 -7

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "tesm"
version = "2.5.1"
version = "2.5.2"
description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen"
requires-python = ">=3.11"
dependencies = [
+18 -3
View File
@@ -65,7 +65,8 @@ CREDENTIALS = Resource(
MAINTENANCE = Resource(
key="maintenance",
label="Wartung",
# Nicht "Wartung": so heisst der Bereich. Die Zeile sagt, was sie erlaubt.
label="Aktualisierung und Neustart",
actions=(A.VIEW, A.EXECUTE),
hint="Paketaktualisierung und Neustart per SSH (lizenzpflichtiges Modul)",
action_hints={A.EXECUTE: "Aktualisierung oder Neustart auf ausgewaehlten Geraeten starten."},
@@ -128,9 +129,22 @@ MONITORING_AREA = Area(
key="monitoring",
label="Überwachung",
icon="cpu",
hint="Geraete, Switche, Zugangsdaten und Wartung. Ohne diesen Zugang bleibt der "
hint="Geraete, Switche und Zugangsdaten. Ohne diesen Zugang bleibt der "
"gesamte Bereich verborgen.",
resources=(DEVICES, SWITCHES, CREDENTIALS, MAINTENANCE),
resources=(DEVICES, SWITCHES, CREDENTIALS),
)
#: Wartung ueberwacht nichts, sie greift ein -- und sie steht seit 2.5.0 als
#: eigener Punkt im Menue. Der Bereichsschluessel heisst ``servicing``, weil
#: ``maintenance`` schon die Ressource ist und Bereiche und Ressourcen sich
#: einen Namensraum teilen. Nach aussen heisst beides "Wartung".
MAINTENANCE_AREA = Area(
key="servicing",
label="Wartung",
icon="wrench",
hint="Paketpflege und Neustarts. Ohne diesen Zugang bleibt der Bereich "
"verborgen -- auch wenn einzelne Rechte darunter gesetzt sind.",
resources=(MAINTENANCE,),
)
NETWORK_AREA = Area(
@@ -150,6 +164,7 @@ FILES_AREA = Area(
PERMISSIONS = PermissionTree(
[
MONITORING_AREA,
MAINTENANCE_AREA,
NETWORK_AREA,
FILES_AREA,
observability_area(LOGS_DHCP),
+20
View File
@@ -289,10 +289,30 @@ DELETE FROM settings WHERE key = 'terminal_enabled';
"""
# Wartung ist ein eigener Bereich geworden und hat damit einen eigenen
# Kill-Switch. Ohne diesen Schritt waere sie nach dem Update bei allen weg:
# das neue Bereichsrecht ist bei niemandem gesetzt, und ohne Bereichsrecht
# greift kein Recht darunter.
#
# Bewusst nicht "alle, die ein Wartungsrecht haben": wer den Bereich
# Ueberwachung nicht hatte, kam auch vorher nicht an die Wartung. Ein Update
# darf Zugang erhalten, aber keinen neuen schaffen.
V6 = """
INSERT OR IGNORE INTO group_permissions (group_id, permission)
SELECT DISTINCT group_id, 'servicing.view'
FROM group_permissions
WHERE permission IN ('maintenance.view', 'maintenance.execute')
AND group_id IN (
SELECT group_id FROM group_permissions WHERE permission = 'monitoring.view'
);
"""
TESM_MIGRATIONS: tuple[Migration, ...] = (
Migration(version=1, name="baseline", sql=V1),
Migration(version=2, name="seed-dhcp-options", fn=seed_dhcp_options),
Migration(version=3, name="restart-events", sql=V3),
Migration(version=4, name="fileshare-pdf-rechte", sql=V4),
Migration(version=5, name="terminal-getrennt", sql=V5),
Migration(version=6, name="wartung-eigener-bereich", sql=V6),
)
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "tesm-core"
version = "2.5.1"
version = "2.5.2"
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
requires-python = ">=3.11"
dependencies = [
@@ -148,7 +148,7 @@ def create_base_app(
#: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide
#: Anwendungen.
auth_tagline: str = "",
app_version: str = "2.5.1",
app_version: str = "2.5.2",
built_in_trusted_keys: tuple[str, ...] = (),
enable_license: bool = True,
template_folder: str | None = None,
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "tesm-licensing"
version = "2.5.1"
version = "2.5.2"
description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver"
requires-python = ">=3.11"
dependencies = ["cryptography>=42"]