1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-03 00:52:49 -05:00

Move into and read ciphers from org subvaults

This commit is contained in:
Kyle Spearrin
2017-03-21 00:04:39 -04:00
parent 4779794599
commit ed8d5d69a4
22 changed files with 283 additions and 16 deletions

View File

@ -63,6 +63,7 @@
<Folder Include="dbo\Tables\" />
<Folder Include="dbo\Views\" />
<Folder Include="dbo\Stored Procedures\" />
<Folder Include="dbo\UserDefinedTypes" />
</ItemGroup>
<ItemGroup>
<Build Include="dbo\Tables\SubvaultCipher.sql" />
@ -168,5 +169,8 @@
<Build Include="dbo\Stored Procedures\CipherDetails_Update.sql" />
<Build Include="dbo\Stored Procedures\CipherDetails_Create.sql" />
<Build Include="dbo\Stored Procedures\FolderCipher_DeleteByUserId.sql" />
<Build Include="dbo\Stored Procedures\SubvaultUser_ReadPermissionsBySubvaultUserId.sql" />
<Build Include="dbo\UserDefinedTypes\GuidIdArray.sql" />
<Build Include="dbo\Stored Procedures\Cipher_UpdateWithSubvaults.sql" />
</ItemGroup>
</Project>

View File

@ -4,10 +4,17 @@ AS
BEGIN
SET NOCOUNT ON
SELECT
*
SELECT DISTINCT
C.*
FROM
[dbo].[CipherDetailsView]
[dbo].[CipherDetailsView] C
LEFT JOIN
[dbo].[SubvaultCipher] SC ON SC.[CipherId] = C.[Id]
LEFT JOIN
[dbo].[SubvaultUser] SU ON SU.[SubvaultId] = SC.[SubvaultId]
LEFT JOIN
[dbo].[OrganizationUser] OU ON OU.[Id] = SU.[OrganizationUserId]
WHERE
[UserId] = @UserId
(C.[UserId] IS NOT NULL AND C.[UserId] = @UserId)
OR OU.[UserId] = @UserId
END

View File

@ -0,0 +1,43 @@
CREATE PROCEDURE [dbo].[Cipher_UpdateWithSubvaults]
@Id UNIQUEIDENTIFIER,
@UserId UNIQUEIDENTIFIER,
@OrganizationId UNIQUEIDENTIFIER,
@Type TINYINT,
@Data NVARCHAR(MAX),
@CreationDate DATETIME2(7),
@RevisionDate DATETIME2(7),
@SubvaultIds AS [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
UPDATE
[dbo].[Cipher]
SET
[UserId] = @UserId,
[OrganizationId] = @OrganizationId,
[Type] = @Type,
[Data] = @Data,
[CreationDate] = @CreationDate,
[RevisionDate] = @RevisionDate
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
;
END

View File

@ -0,0 +1,22 @@
CREATE PROCEDURE [dbo].[SubvaultUser_ReadPermissionsBySubvaultUserId]
@UserId UNIQUEIDENTIFIER,
@SubvaultIds AS [dbo].[GuidIdArray] READONLY,
@OrganizationId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT
SU.[SubvaultId],
CASE WHEN OU.[Type] = 2 THEN SU.[Admin] ELSE 1 END AS [Admin], -- 2 = Regular User
CASE WHEN OU.[Type] = 2 THEN SU.[ReadOnly] ELSE 0 END AS [ReadOnly] -- 2 = Regular User
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

View File

@ -1,6 +1,6 @@
CREATE TABLE [dbo].[History] (
[Id] BIGINT IDENTITY (1, 1) NOT NULL,
[UserId] UNIQUEIDENTIFIER NOT NULL,
[UserId] UNIQUEIDENTIFIER NULL,
[CipherId] UNIQUEIDENTIFIER NOT NULL,
[Event] TINYINT NOT NULL,
[Date] DATETIME2 (7) NOT NULL,

View File

@ -0,0 +1 @@
CREATE TYPE [dbo].[GuidIdArray] AS TABLE ([Id] UNIQUEIDENTIFIER NOT NULL);