diff --git a/backend/windmill-api/src/oauth2.rs b/backend/windmill-api/src/oauth2.rs index 57d18b41c2..45c3a67af1 100644 --- a/backend/windmill-api/src/oauth2.rs +++ b/backend/windmill-api/src/oauth2.rs @@ -892,8 +892,9 @@ async fn login_callback( if demo_exists { if let Err(e) = sqlx::query!( "INSERT INTO workspace_invite - (workspace_id, email, is_admin) - VALUES ('demo', $1, false)", + (workspace_id, email, is_admin) + VALUES ('demo', $1, false) + ON CONFLICT DO NOTHING", &email ) .execute(&mut tx) diff --git a/backend/windmill-api/src/users.rs b/backend/windmill-api/src/users.rs index 4bced44059..f766d5f45a 100644 --- a/backend/windmill-api/src/users.rs +++ b/backend/windmill-api/src/users.rs @@ -1014,6 +1014,13 @@ async fn delete_user( .execute(&mut tx) .await?; + sqlx::query!( + "DELETE FROM workspace_invite WHERE email = $1", + &email_to_delete + ) + .execute(&mut tx) + .await?; + audit_log( &mut tx, &email.unwrap(), diff --git a/frontend/src/lib/components/SuperadminSettings.svelte b/frontend/src/lib/components/SuperadminSettings.svelte index ac0a1e3cd0..1592e63a39 100644 --- a/frontend/src/lib/components/SuperadminSettings.svelte +++ b/frontend/src/lib/components/SuperadminSettings.svelte @@ -8,6 +8,7 @@ import InviteGlobalUser from '$lib/components/InviteGlobalUser.svelte' import { Alert, Badge, Drawer, DrawerContent } from '$lib/components/common' import ConfirmationModal from '$lib/components/common/confirmationModal/ConfirmationModal.svelte' + import { sendUserToast } from '$lib/utils' let drawer: Drawer @@ -44,6 +45,7 @@ async function listUsers(): Promise { users = await UserService.listUsersAsSuperAdmin({ perPage: 100000 }) fuse?.setCollection(users) + userFilter = userFilter } @@ -128,6 +130,7 @@ on:click={async () => { deleteConfirmedCallback = async () => { await UserService.globalUserDelete({ email }) + sendUserToast(`User ${email} removed`) listUsers() } openConfirmation = true