diff --git a/src/backend/InvenTree/users/api.py b/src/backend/InvenTree/users/api.py index f8f2e8e067..8975e4fc10 100644 --- a/src/backend/InvenTree/users/api.py +++ b/src/backend/InvenTree/users/api.py @@ -144,6 +144,14 @@ class UserDetail(RetrieveUpdateDestroyAPI): serializer_class = ExtendedUserSerializer permission_classes = [InvenTree.permissions.StaffRolePermissionOrReadOnly] + def perform_destroy(self, instance): + """Override destroy method to ensure sessions are deleted first.""" + # Remove all sessions for this user + if sessions := instance.usersession_set.all(): + sessions.delete() + # Normally delete the user + return super().perform_destroy(instance) + class UserDetailSetPassword(UpdateAPI): """Allows superusers to set the password for a user.""" diff --git a/src/frontend/src/tables/settings/UserTable.tsx b/src/frontend/src/tables/settings/UserTable.tsx index f8cadf199b..aa24738902 100644 --- a/src/frontend/src/tables/settings/UserTable.tsx +++ b/src/frontend/src/tables/settings/UserTable.tsx @@ -358,6 +358,7 @@ export function UserTable({ title: t`Delete user`, successMessage: t`User deleted`, table: table, + preFormContent: <>, preFormWarning: t`Are you sure you want to delete this user?` });