From 0e13dcb9a43503b33f57e754cdbe14feb149e607 Mon Sep 17 00:00:00 2001 From: Claude Dev Date: Tue, 24 Mar 2026 11:57:08 +0100 Subject: [PATCH] Globe-Zugang: Checkbox im User-Management Neue Spalte "Globe" in der Nutzertabelle mit Toggle-Checkbox. API-Endpoint PUT /api/users/{id}/globe-access. Steuert das globe_access Feld in der geteilten DB. --- src/routers/users.py | 18 ++++++++++++++++++ src/static/dashboard.html | 1 + src/static/js/app.js | 12 +++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/routers/users.py b/src/routers/users.py index 52e9a7c..791a322 100644 --- a/src/routers/users.py +++ b/src/routers/users.py @@ -131,6 +131,24 @@ async def activate_user( return {"ok": True} + + +@router.put("/{user_id}/globe-access") +async def toggle_globe_access( + user_id: int, + admin: dict = Depends(get_current_admin), + db: aiosqlite.Connection = Depends(db_dependency), +): + cursor = await db.execute("SELECT id, globe_access FROM users WHERE id = ?", (user_id,)) + row = await cursor.fetchone() + if not row: + raise HTTPException(status_code=404, detail="Nutzer nicht gefunden") + + new_val = 0 if row[1] else 1 + await db.execute("UPDATE users SET globe_access = ? WHERE id = ?", (new_val, user_id)) + await db.commit() + return {"ok": True, "globe_access": bool(new_val)} + @router.put("/{user_id}/role") async def change_role( user_id: int, diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 5958665..1c3fa29 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -105,6 +105,7 @@ E-Mail Rolle Status + Globe Aktionen diff --git a/src/static/js/app.js b/src/static/js/app.js index 6e44534..b91823d 100644 --- a/src/static/js/app.js +++ b/src/static/js/app.js @@ -234,7 +234,7 @@ async function loadOrgUsers(orgId) { const tbody = document.getElementById("userTable"); if (users.length === 0) { - tbody.innerHTML = 'Keine Nutzer'; + tbody.innerHTML = 'Keine Nutzer'; return; } tbody.innerHTML = users.map(u => ` @@ -247,6 +247,7 @@ async function loadOrgUsers(orgId) { ${u.is_active ? "Aktiv" : "Inaktiv"} + ${u.is_active ? `` @@ -279,6 +280,15 @@ async function toggleUser(userId, activate) { } } +async function toggleGlobeAccess(userId) { + try { + await API.put("/api/users/" + userId + "/globe-access"); + } catch (err) { + alert(err.message); + if (currentOrgId) loadOrgUsers(currentOrgId); + } +} + function confirmDeleteUser(userId, email) { showConfirm( "Nutzer löschen",