From cb6237357300ea2b14eb26c4d610e5a67b5dc7ed Mon Sep 17 00:00:00 2001 From: Alexander Petric Date: Fri, 3 Oct 2025 12:25:48 -0400 Subject: [PATCH] fix: show that user is disabled in workspacelist (#6748) * fix: show that user is disabled in workspacelist * Update SQLx metadata --------- Co-authored-by: windmill-internal-app[bot] --- ...536d2fd8a25fe4cd57c223db7d744493f8470c6.json} | 12 +++++++++--- backend/windmill-api/openapi.yaml | 3 +++ backend/windmill-api/src/workspaces.rs | 4 +++- .../lib/components/sidebar/WorkspaceMenu.svelte | 11 ++++++++--- frontend/src/lib/stores.ts | 4 +++- .../(logged)/user/(user)/workspaces/+page.svelte | 16 +++++++++++++--- 6 files changed, 39 insertions(+), 11 deletions(-) rename backend/.sqlx/{query-d0037961e8e787c4277afc3eb79f3b72e3323f878387de8b6fa31493f1215a77.json => query-c095a9658c542efc9f0255a1b536d2fd8a25fe4cd57c223db7d744493f8470c6.json} (67%) diff --git a/backend/.sqlx/query-d0037961e8e787c4277afc3eb79f3b72e3323f878387de8b6fa31493f1215a77.json b/backend/.sqlx/query-c095a9658c542efc9f0255a1b536d2fd8a25fe4cd57c223db7d744493f8470c6.json similarity index 67% rename from backend/.sqlx/query-d0037961e8e787c4277afc3eb79f3b72e3323f878387de8b6fa31493f1215a77.json rename to backend/.sqlx/query-c095a9658c542efc9f0255a1b536d2fd8a25fe4cd57c223db7d744493f8470c6.json index d284956ca1..bb80e8d19a 100644 --- a/backend/.sqlx/query-d0037961e8e787c4277afc3eb79f3b72e3323f878387de8b6fa31493f1215a77.json +++ b/backend/.sqlx/query-c095a9658c542efc9f0255a1b536d2fd8a25fe4cd57c223db7d744493f8470c6.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT workspace.id, workspace.name, usr.username, workspace_settings.color, workspace.parent_workspace_id,\n CASE WHEN usr.operator THEN workspace_settings.operator_settings ELSE NULL END as operator_settings\n FROM workspace\n JOIN usr ON usr.workspace_id = workspace.id\n JOIN workspace_settings ON workspace_settings.workspace_id = workspace.id\n WHERE usr.email = $1 AND workspace.deleted = false", + "query": "SELECT workspace.id, workspace.name, usr.username, workspace_settings.color, workspace.parent_workspace_id,\n CASE WHEN usr.operator THEN workspace_settings.operator_settings ELSE NULL END as operator_settings,\n usr.disabled\n FROM workspace\n JOIN usr ON usr.workspace_id = workspace.id\n JOIN workspace_settings ON workspace_settings.workspace_id = workspace.id\n WHERE usr.email = $1 AND workspace.deleted = false", "describe": { "columns": [ { @@ -32,6 +32,11 @@ "ordinal": 5, "name": "operator_settings", "type_info": "Jsonb" + }, + { + "ordinal": 6, + "name": "disabled", + "type_info": "Bool" } ], "parameters": { @@ -45,8 +50,9 @@ false, true, true, - null + null, + false ] }, - "hash": "d0037961e8e787c4277afc3eb79f3b72e3323f878387de8b6fa31493f1215a77" + "hash": "c095a9658c542efc9f0255a1b536d2fd8a25fe4cd57c223db7d744493f8470c6" } diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 036637e4de..e804b651e7 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -18010,11 +18010,14 @@ components: created_by: type: string nullable: true + disabled: + type: boolean required: - id - name - username - color + - disabled required: - email - workspaces diff --git a/backend/windmill-api/src/workspaces.rs b/backend/windmill-api/src/workspaces.rs index 537cff8002..7d06cea031 100644 --- a/backend/windmill-api/src/workspaces.rs +++ b/backend/windmill-api/src/workspaces.rs @@ -366,6 +366,7 @@ struct UserWorkspace { pub color: Option, pub operator_settings: Option>, pub parent_workspace_id: Option, + pub disabled: bool, } #[derive(Deserialize)] @@ -2109,7 +2110,8 @@ async fn user_workspaces( let workspaces = sqlx::query_as!( UserWorkspace, "SELECT workspace.id, workspace.name, usr.username, workspace_settings.color, workspace.parent_workspace_id, - CASE WHEN usr.operator THEN workspace_settings.operator_settings ELSE NULL END as operator_settings + CASE WHEN usr.operator THEN workspace_settings.operator_settings ELSE NULL END as operator_settings, + usr.disabled FROM workspace JOIN usr ON usr.workspace_id = workspace.id JOIN workspace_settings ON workspace_settings.workspace_id = workspace.id diff --git a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte index 60f377f224..c1d0ce1c69 100644 --- a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte +++ b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte @@ -140,12 +140,17 @@ { - await toggleSwitchWorkspace(workspace.id) + if (!workspace.disabled) { + await toggleSwitchWorkspace(workspace.id) + } }} {item} > @@ -166,7 +171,7 @@ isForked ? 'text-secondary' : 'text-primary' )} > - {workspace.name} + {workspace.name}{workspace.disabled ? ' (user disabled)' : ''}
> = derived( name: 'Admins', username: 'superadmin', color: undefined, - operator_settings: undefined + operator_settings: undefined, + disabled: false } ] } else { diff --git a/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte b/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte index 03990ec897..e1c783cc9b 100644 --- a/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/user/(user)/workspaces/+page.svelte @@ -70,7 +70,7 @@ async function loadWorkspacesAsAdmin() { workspaces = (await WorkspaceService.listWorkspacesAsSuperAdmin({ perPage: 1000 })).map((x) => { - return { ...x, username: 'superadmin' } + return { ...x, username: 'superadmin', disabled: false } }) } @@ -205,9 +205,16 @@