diff --git a/web/blueprints/site_admin.py b/web/blueprints/site_admin.py index 849da34..a5aa349 100644 --- a/web/blueprints/site_admin.py +++ b/web/blueprints/site_admin.py @@ -25,14 +25,20 @@ def admin_required(f): @site_admin.route("/") @admin_required def dashboard(): - groups = db.list_all_groups() - users = db.list_all_users() - for g in groups: - g["has_db"] = db.has_db_configured(g["id"]) + try: + groups = db.list_all_groups() or [] + users = db.list_all_users() or [] + for g in groups: + try: + g["has_db"] = db.has_db_configured(g["id"]) + except Exception: + g["has_db"] = False + except Exception: + groups, users = [], [] stats = { "group_count": len(groups), "user_count": len(users), - "db_configured": sum(1 for g in groups if g["has_db"]), + "db_configured": sum(1 for g in groups if g.get("has_db")), "admin_count": sum(1 for u in users if u.get("is_site_admin")), } return render_template("admin/dashboard.html", groups=groups, users=users, stats=stats) @@ -126,6 +132,19 @@ def group_member_remove(group_id, user_id): return redirect(url_for("site_admin.group_members", group_id=group_id)) +@site_admin.route("/groups//members//toggle-role", methods=["POST"]) +@admin_required +def group_member_toggle_role(group_id, user_id): + member = db.get_group_member(user_id, group_id) + if member: + import json as _json + new_role = "member" if member["role"] == "admin" else "admin" + perms = member["permissions"] if isinstance(member["permissions"], dict) else (_json.loads(member["permissions"]) if member["permissions"] else {}) + db.update_member(user_id, group_id, new_role, perms) + flash(f"Rolle auf '{new_role}' geändert.", "success") + return redirect(url_for("site_admin.group_members", group_id=group_id)) + + # ────────────────────────────────────────────────────────────── # Nutzer verwalten # ────────────────────────────────────────────────────────────── diff --git a/web/templates/admin/dashboard.html b/web/templates/admin/dashboard.html index b1db800..e265c46 100644 --- a/web/templates/admin/dashboard.html +++ b/web/templates/admin/dashboard.html @@ -43,7 +43,7 @@
Gruppen - + Neu
@@ -87,7 +87,7 @@
Benutzer - + Neu
diff --git a/web/templates/admin/groups.html b/web/templates/admin/groups.html index e3f7414..fe7b062 100644 --- a/web/templates/admin/groups.html +++ b/web/templates/admin/groups.html @@ -3,7 +3,7 @@ {% block content %} diff --git a/web/templates/admin/users.html b/web/templates/admin/users.html index 0895469..7b0554d 100644 --- a/web/templates/admin/users.html +++ b/web/templates/admin/users.html @@ -3,7 +3,7 @@ {% block content %}