Fix: globe_access in UserResponse Pydantic-Model ergaenzt
Ursache: UserResponse hatte kein globe_access Feld, response_model filterte es aus der API-Antwort. Checkbox zeigte immer false. UI: Checkbox durch An/Aus Toggle-Button ersetzt (gruen/grau). Nach Klick wird Liste neu geladen und zeigt korrekten DB-State.
Dieser Commit ist enthalten in:
@@ -33,6 +33,7 @@ class OrgResponse(BaseModel):
|
|||||||
license_status: str = ""
|
license_status: str = ""
|
||||||
license_type: str = ""
|
license_type: str = ""
|
||||||
created_at: str
|
created_at: str
|
||||||
|
globe_access: bool = False
|
||||||
|
|
||||||
|
|
||||||
class LicenseCreate(BaseModel):
|
class LicenseCreate(BaseModel):
|
||||||
@@ -61,6 +62,7 @@ class LicenseResponse(BaseModel):
|
|||||||
cost_per_credit: Optional[float] = None
|
cost_per_credit: Optional[float] = None
|
||||||
budget_warning_percent: Optional[int] = None
|
budget_warning_percent: Optional[int] = None
|
||||||
created_at: str
|
created_at: str
|
||||||
|
globe_access: bool = False
|
||||||
|
|
||||||
|
|
||||||
class UserCreate(BaseModel):
|
class UserCreate(BaseModel):
|
||||||
@@ -78,3 +80,4 @@ class UserResponse(BaseModel):
|
|||||||
is_active: bool
|
is_active: bool
|
||||||
last_login_at: Optional[str]
|
last_login_at: Optional[str]
|
||||||
created_at: str
|
created_at: str
|
||||||
|
globe_access: bool = False
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ async function loadOrgUsers(orgId) {
|
|||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td><span class="badge badge-${u.is_active ? 'active' : 'inactive'}">${u.is_active ? "Aktiv" : "Inaktiv"}</span></td>
|
<td><span class="badge badge-${u.is_active ? 'active' : 'inactive'}">${u.is_active ? "Aktiv" : "Inaktiv"}</span></td>
|
||||||
<td style="text-align:center"><input type="checkbox" ${u.globe_access ? "checked" : ""} onchange="toggleGlobeAccess(${u.id})" title="Globe-Zugang"></td>
|
<td style="text-align:center">${u.globe_access ? '<button class="btn btn-small" style="background:#00cc66;color:#fff;border:none;min-width:50px" onclick="toggleGlobeAccess(' + u.id + ')">An</button>' : '<button class="btn btn-secondary btn-small" style="min-width:50px" onclick="toggleGlobeAccess(' + u.id + ')">Aus</button>'}</td>
|
||||||
<td>
|
<td>
|
||||||
${u.is_active
|
${u.is_active
|
||||||
? `<button class="btn btn-secondary btn-small" onclick="toggleUser(${u.id}, false)">Deaktivieren</button>`
|
? `<button class="btn btn-secondary btn-small" onclick="toggleUser(${u.id}, false)">Deaktivieren</button>`
|
||||||
@@ -283,6 +283,7 @@ async function toggleUser(userId, activate) {
|
|||||||
async function toggleGlobeAccess(userId) {
|
async function toggleGlobeAccess(userId) {
|
||||||
try {
|
try {
|
||||||
await API.put("/api/users/" + userId + "/globe-access");
|
await API.put("/api/users/" + userId + "/globe-access");
|
||||||
|
if (currentOrgId) loadOrgUsers(currentOrgId);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
alert(err.message);
|
alert(err.message);
|
||||||
if (currentOrgId) loadOrgUsers(currentOrgId);
|
if (currentOrgId) loadOrgUsers(currentOrgId);
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren