1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-17 23:50:58 -05:00

admin subvault updates for cipher

This commit is contained in:
Kyle Spearrin
2017-04-17 23:12:48 -04:00
parent 0e5799f7c8
commit f7aa6fadbf
13 changed files with 106 additions and 102 deletions

View File

@ -143,7 +143,6 @@
<Build Include="dbo\Stored Procedures\Subvault_ReadById.sql" />
<Build Include="dbo\Stored Procedures\User_UpdateEmailPassword.sql" />
<Build Include="dbo\Stored Procedures\Subvault_Update.sql" />
<Build Include="dbo\Stored Procedures\SubvaultUser_ReadPermissionsBySubvaultUserId.sql" />
<Build Include="dbo\Stored Procedures\SubvaultCipher_Create.sql" />
<Build Include="dbo\Stored Procedures\SubvaultCipher_Delete.sql" />
<Build Include="dbo\Stored Procedures\Cipher_UpdateWithSubvaults.sql" />
@ -176,5 +175,6 @@
<Build Include="dbo\User Defined Types\GuidIdArray.sql" />
<Build Include="dbo\Stored Procedures\Cipher_ReadByOrganizationId.sql" />
<Build Include="dbo\Stored Procedures\SubvaultCipher_ReadByOrganizationId.sql" />
<Build Include="dbo\Stored Procedures\SubvaultCipher_UpdateSubvaultsAdmin.sql" />
</ItemGroup>
</Project>

View File

@ -24,21 +24,32 @@ BEGIN
WHERE
[Id] = @Id
MERGE
[dbo].[SubvaultCipher] AS [Target]
USING
@SubvaultIds AS [Source]
ON
[Target].[SubvaultId] = [Source].[Id]
AND [Target].[CipherId] = @Id
WHEN NOT MATCHED BY TARGET THEN
INSERT VALUES
(
[Source].[Id],
@Id
)
WHEN NOT MATCHED BY SOURCE
AND [Target].[CipherId] = @Id THEN
DELETE
;
;WITH [AvailableSubvaultsCTE] AS(
SELECT
SU.SubvaultId
FROM
[dbo].[SubvaultUser] SU
INNER JOIN
[dbo].[OrganizationUser] OU ON OU.[Id] = SU.[OrganizationUserId]
INNER JOIN
[dbo].[Organization] O ON O.[Id] = OU.[OrganizationId]
WHERE
OU.[UserId] = @UserId
AND SU.[ReadOnly] = 0
AND OU.[Status] = 2 -- Confirmed
AND O.[Enabled] = 1
)
INSERT INTO [dbo].[SubvaultCipher]
(
[SubvaultId],
[CipherId]
)
SELECT
Id,
@Id
FROM
@SubvaultIds
WHERE
Id IN (SELECT SubvaultId FROM [AvailableSubvaultsCTE])
END

View File

@ -0,0 +1,35 @@
CREATE PROCEDURE [dbo].[SubvaultCipher_UpdateSubvaultsAdmin]
@CipherId UNIQUEIDENTIFIER,
@OrganizationId UNIQUEIDENTIFIER,
@SubvaultIds AS [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
;WITH [AvailableSubvaultsCTE] AS(
SELECT
Id
FROM
[dbo].[Subvault]
WHERE
OrganizationId = @OrganizationId
)
MERGE
[dbo].[SubvaultCipher] AS [Target]
USING
@SubvaultIds AS [Source]
ON
[Target].[SubvaultId] = [Source].[Id]
AND [Target].[CipherId] = @CipherId
WHEN NOT MATCHED BY TARGET
AND [Source].[Id] IN (SELECT [SubvaultId] FROM [AvailableSubvaultsCTE]) THEN
INSERT VALUES
(
[Source].[Id],
@CipherId
)
WHEN NOT MATCHED BY SOURCE
AND [Target].[CipherId] = @CipherId THEN
DELETE
;
END

View File

@ -1,21 +0,0 @@
CREATE PROCEDURE [dbo].[SubvaultUser_ReadPermissionsBySubvaultUserId]
@UserId UNIQUEIDENTIFIER,
@SubvaultIds AS [dbo].[GuidIdArray] READONLY,
@OrganizationId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT
SU.[SubvaultId],
SU.[ReadOnly]
FROM
[dbo].[SubvaultUser] SU
INNER JOIN
[dbo].[OrganizationUser] OU ON OU.Id = SU.OrganizationUserId
WHERE
OU.[UserId] = @UserId
AND OU.[OrganizationId] = @OrganizationId
AND OU.[Status] = 2 -- 2 = Confirmed
AND SU.[SubvaultId] IN (SELECT [Id] FROM @SubvaultIds)
END