1
0
mirror of https://github.com/bitwarden/server.git synced 2025-02-01 23:31:41 +01:00

[SM-1075] Fix bulk remove organization users with Secrets Manager (#4197)

* Fix OrganizationUser_DeleteByIds procedure

* Add db migration
This commit is contained in:
Thomas Avery 2024-06-21 17:29:36 -05:00 committed by GitHub
parent c4f176a1c2
commit 8a1b64a21b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 122 additions and 2 deletions

View File

@ -58,11 +58,29 @@ BEGIN
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION GoupUser_DeleteMany_GroupUsers
COMMIT TRANSACTION GroupUser_DeleteMany_GroupUsers
END
SET @BatchSize = 100;
-- Delete User Access Policies
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION AccessPolicy_DeleteMany_Users
DELETE TOP(@BatchSize) AP
FROM
[dbo].[AccessPolicy] AP
INNER JOIN
@Ids I ON I.Id = AP.OrganizationUserId
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION AccessPolicy_DeleteMany_Users
END
EXEC [dbo].[OrganizationSponsorship_OrganizationUsersDeleted] @Ids
SET @BatchSize = 100;
-- Delete OrganizationUsers

View File

@ -0,0 +1,102 @@
CREATE OR ALTER PROCEDURE [dbo].[OrganizationUser_DeleteByIds]
@Ids [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationUserIds] @Ids
DECLARE @UserAndOrganizationIds [dbo].[TwoGuidIdArray]
INSERT INTO @UserAndOrganizationIds
(Id1, Id2)
SELECT
UserId,
OrganizationId
FROM
[dbo].[OrganizationUser] OU
INNER JOIN
@Ids OUIds ON OUIds.Id = OU.Id
WHERE
UserId IS NOT NULL AND
OrganizationId IS NOT NULL
BEGIN
EXEC [dbo].[SsoUser_DeleteMany] @UserAndOrganizationIds
END
DECLARE @BatchSize INT = 100
-- Delete CollectionUsers
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION CollectionUser_DeleteMany_CUs
DELETE TOP(@BatchSize) CU
FROM
[dbo].[CollectionUser] CU
INNER JOIN
@Ids I ON I.Id = CU.OrganizationUserId
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION CollectionUser_DeleteMany_CUs
END
SET @BatchSize = 100;
-- Delete GroupUsers
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION GroupUser_DeleteMany_GroupUsers
DELETE TOP(@BatchSize) GU
FROM
[dbo].[GroupUser] GU
INNER JOIN
@Ids I ON I.Id = GU.OrganizationUserId
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION GroupUser_DeleteMany_GroupUsers
END
SET @BatchSize = 100;
-- Delete User Access Policies
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION AccessPolicy_DeleteMany_Users
DELETE TOP(@BatchSize) AP
FROM
[dbo].[AccessPolicy] AP
INNER JOIN
@Ids I ON I.Id = AP.OrganizationUserId
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION AccessPolicy_DeleteMany_Users
END
EXEC [dbo].[OrganizationSponsorship_OrganizationUsersDeleted] @Ids
SET @BatchSize = 100;
-- Delete OrganizationUsers
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION OrganizationUser_DeleteMany_OUs
DELETE TOP(@BatchSize) OU
FROM
[dbo].[OrganizationUser] OU
INNER JOIN
@Ids I ON I.Id = OU.Id
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION OrganizationUser_DeleteMany_OUs
END
END
GO