1
0
mirror of https://github.com/bitwarden/server.git synced 2025-01-24 22:11:24 +01:00
bitwarden-server/util/Migrator/DbScripts/2024-12-11-00_BumpAccountRevisionDateJsonIds.sql
Rui Tomé b75c63c2c6
[PM-15957] Fix: Domain Claim fails to enable Single Organization Policy, sends no emails and Revokes all users (#5147)
* Add JSON-based stored procedure for updating account revision dates and modify existing procedure to use it

* Refactor SingleOrgPolicyValidator to revoke only non-compliant organization users and update related tests
2024-12-17 15:57:31 +00:00

65 lines
1.4 KiB
Transact-SQL

CREATE OR ALTER PROCEDURE [dbo].[User_BumpAccountRevisionDateByOrganizationUserIdsJson]
@OrganizationUserIds NVARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #UserIds
(
UserId UNIQUEIDENTIFIER NOT NULL
);
INSERT INTO #UserIds (UserId)
SELECT
OU.UserId
FROM
[dbo].[OrganizationUser] OU
INNER JOIN
(SELECT [value] as Id FROM OPENJSON(@OrganizationUserIds)) AS OUIds
ON OUIds.Id = OU.Id
WHERE
OU.[Status] = 2 -- Confirmed
UPDATE
U
SET
U.[AccountRevisionDate] = GETUTCDATE()
FROM
[dbo].[User] U
INNER JOIN
#UserIds ON U.[Id] = #UserIds.[UserId]
DROP TABLE #UserIds
END
GO
CREATE OR ALTER PROCEDURE [dbo].[OrganizationUser_SetStatusForUsersById]
@OrganizationUserIds AS NVARCHAR(MAX),
@Status SMALLINT
AS
BEGIN
SET NOCOUNT ON
-- Declare a table variable to hold the parsed JSON data
DECLARE @ParsedIds TABLE (Id UNIQUEIDENTIFIER);
-- Parse the JSON input into the table variable
INSERT INTO @ParsedIds (Id)
SELECT value
FROM OPENJSON(@OrganizationUserIds);
-- Check if the input table is empty
IF (SELECT COUNT(1) FROM @ParsedIds) < 1
BEGIN
RETURN(-1);
END
UPDATE
[dbo].[OrganizationUser]
SET [Status] = @Status
WHERE [Id] IN (SELECT Id from @ParsedIds)
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationUserIdsJson] @OrganizationUserIds
END
GO