Menü Projekt-Berechtigungen, Übersichtssichten und AppAdmin-Erkennung

- Menü: Dropdown "Projekt-Berechtigungen" unter Optionen mit
  Unterpunkten "Projekt-Zugriffe" und "Nutzer-Zugriffe" (nur SysAdmin/AppAdmin)
- AppAdmin-Erkennung: Server liefert isAppAdmin-Flag im Login- und
  getusers-Response (applikationsspezifisch via has_permission)
- Login: CurrentUserIsAppAdmin in sessionStorage speichern/entfernen
- Projekt-Zugriffe: geschachtelter Treetable (Projekt → Nutzer) als
  reine Anzeige, Detail-Sicht aus Projekt-Maske mit Bearbeitung
- Nutzer-Zugriffe: neue Komponente user_projektliste.ts, geschachtelter
  Treetable (Nutzer → Projekte), reine Anzeige
- Server: neuer Endpunkt GET /xhr/projektuser/listall (nur AppAdmin/SysAdmin)
- Server: get_all_projekt_users() mit Batch-Query für Projekte und User
- Treetable-Widget: Platzhalter-Pfeil bei kinderlosen Nodes nur wenn
  Geschwister mit Kindern existieren (hasSiblingsWithChildren)
- Datei projekt_user.ts umbenannt in projekt_userliste.ts (konsistent
  mit user_projektliste.ts)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
gg committed 2026-09-07 16:04:06 +02:00
1 parent 505177b5e2
commit 9ed5e88e01
10 files changed
+693 -82

No files matched your search

+8 -2
View File
@@ -52,6 +52,7 @@ def checklogin():
login_user(user)
result = user.to_dict()
result["isSysAdmin"] = user.is_SysAdmin()
result["isAppAdmin"] = user.has_permission(app.config["APPID"], [APP_ADMIN])
return jsonify(result), 200
@@ -86,13 +87,18 @@ def logout():
def getusers():
"""
Die Rückgabe wird in 'users.get_users()' (s.u.) anhand er App-Berechtigung und der
Rollen gefiltert.
Rollen gefiltert. Pro User wird zusätzlich isSysAdmin und das app-spezifische
isAppAdmin Flag ergänzt, damit der Client keine app-unspezifische Rollenprüfung
durchführen muss.
"""
userquery = users.get_users()
result = []
user: User
for user in userquery:
result.append(user.to_relationaldict())
eintrag = user.to_relationaldict()
eintrag["isSysAdmin"] = user.is_SysAdmin()
eintrag["isAppAdmin"] = user.has_permission(app.config["APPID"], [APP_ADMIN])
result.append(eintrag)
return jsonify(result), 200