mirror of
https://github.com/bitwarden/server.git
synced 2025-04-07 05:58:13 -05:00
Be explicit with AccessAll and fix bug in create/update cipher
This commit is contained in:
parent
54f3ab5863
commit
1c0095b122
@ -17,16 +17,14 @@ SELECT
|
|||||||
CASE
|
CASE
|
||||||
WHEN
|
WHEN
|
||||||
OU.[AccessAll] = 1
|
OU.[AccessAll] = 1
|
||||||
OR CU.[ReadOnly] = 0
|
|
||||||
OR G.[AccessAll] = 1
|
OR G.[AccessAll] = 1
|
||||||
OR CG.[ReadOnly] = 0
|
OR COALESCE(CU.[ReadOnly], CG.[ReadOnly], 0) = 0
|
||||||
THEN 1
|
THEN 1
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END [Edit],
|
END [Edit],
|
||||||
CASE
|
CASE
|
||||||
WHEN
|
WHEN
|
||||||
CU.[HidePasswords] = 0
|
COALESCE(CU.[HidePasswords], CG.[HidePasswords], 0) = 0
|
||||||
OR CG.[HidePasswords] = 0
|
|
||||||
THEN 1
|
THEN 1
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END [ViewPassword],
|
END [ViewPassword],
|
||||||
|
@ -3,7 +3,14 @@ RETURNS TABLE
|
|||||||
AS RETURN
|
AS RETURN
|
||||||
SELECT
|
SELECT
|
||||||
C.*,
|
C.*,
|
||||||
COALESCE(CU.[ReadOnly], CG.[ReadOnly], 0) AS [ReadOnly],
|
CASE
|
||||||
|
WHEN
|
||||||
|
OU.[AccessAll] = 1
|
||||||
|
OR G.[AccessAll] = 1
|
||||||
|
OR COALESCE(CU.[ReadOnly], CG.[ReadOnly], 0) = 0
|
||||||
|
THEN 0
|
||||||
|
ELSE 1
|
||||||
|
END [ReadOnly],
|
||||||
COALESCE(CU.[HidePasswords], CG.[HidePasswords], 0) AS [HidePasswords]
|
COALESCE(CU.[HidePasswords], CG.[HidePasswords], 0) AS [HidePasswords]
|
||||||
FROM
|
FROM
|
||||||
[dbo].[CollectionView] C
|
[dbo].[CollectionView] C
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
@FolderId UNIQUEIDENTIFIER,
|
@FolderId UNIQUEIDENTIFIER,
|
||||||
@Favorite BIT,
|
@Favorite BIT,
|
||||||
@Edit BIT, -- not used
|
@Edit BIT, -- not used
|
||||||
|
@ViewPassword BIT, -- not used
|
||||||
@OrganizationUseTotp BIT, -- not used
|
@OrganizationUseTotp BIT, -- not used
|
||||||
@DeletedDate DATETIME2(7)
|
@DeletedDate DATETIME2(7)
|
||||||
AS
|
AS
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
@FolderId UNIQUEIDENTIFIER,
|
@FolderId UNIQUEIDENTIFIER,
|
||||||
@Favorite BIT,
|
@Favorite BIT,
|
||||||
@Edit BIT, -- not used
|
@Edit BIT, -- not used
|
||||||
|
@ViewPassword BIT, -- not used
|
||||||
@OrganizationUseTotp BIT, -- not used
|
@OrganizationUseTotp BIT, -- not used
|
||||||
@DeletedDate DATETIME2(7),
|
@DeletedDate DATETIME2(7),
|
||||||
@CollectionIds AS [dbo].[GuidIdArray] READONLY
|
@CollectionIds AS [dbo].[GuidIdArray] READONLY
|
||||||
@ -20,7 +21,8 @@ BEGIN
|
|||||||
SET NOCOUNT ON
|
SET NOCOUNT ON
|
||||||
|
|
||||||
EXEC [dbo].[CipherDetails_Create] @Id, @UserId, @OrganizationId, @Type, @Data, @Favorites, @Folders,
|
EXEC [dbo].[CipherDetails_Create] @Id, @UserId, @OrganizationId, @Type, @Data, @Favorites, @Folders,
|
||||||
@Attachments, @CreationDate, @RevisionDate, @FolderId, @Favorite, @Edit, @OrganizationUseTotp, @DeletedDate
|
@Attachments, @CreationDate, @RevisionDate, @FolderId, @Favorite, @Edit, @ViewPassword,
|
||||||
|
@OrganizationUseTotp, @DeletedDate
|
||||||
|
|
||||||
DECLARE @UpdateCollectionsSuccess INT
|
DECLARE @UpdateCollectionsSuccess INT
|
||||||
EXEC @UpdateCollectionsSuccess = [dbo].[Cipher_UpdateCollections] @Id, @UserId, @OrganizationId, @CollectionIds
|
EXEC @UpdateCollectionsSuccess = [dbo].[Cipher_UpdateCollections] @Id, @UserId, @OrganizationId, @CollectionIds
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
@FolderId UNIQUEIDENTIFIER,
|
@FolderId UNIQUEIDENTIFIER,
|
||||||
@Favorite BIT,
|
@Favorite BIT,
|
||||||
@Edit BIT, -- not used
|
@Edit BIT, -- not used
|
||||||
|
@ViewPassword BIT, -- not used
|
||||||
@OrganizationUseTotp BIT, -- not used
|
@OrganizationUseTotp BIT, -- not used
|
||||||
@DeletedDate DATETIME2(2)
|
@DeletedDate DATETIME2(2)
|
||||||
AS
|
AS
|
||||||
|
@ -80,16 +80,14 @@ SELECT
|
|||||||
CASE
|
CASE
|
||||||
WHEN
|
WHEN
|
||||||
OU.[AccessAll] = 1
|
OU.[AccessAll] = 1
|
||||||
OR CU.[ReadOnly] = 0
|
|
||||||
OR G.[AccessAll] = 1
|
OR G.[AccessAll] = 1
|
||||||
OR CG.[ReadOnly] = 0
|
OR COALESCE(CU.[ReadOnly], CG.[ReadOnly], 0) = 0
|
||||||
THEN 1
|
THEN 1
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END [Edit],
|
END [Edit],
|
||||||
CASE
|
CASE
|
||||||
WHEN
|
WHEN
|
||||||
CU.[HidePasswords] = 0
|
COALESCE(CU.[HidePasswords], CG.[HidePasswords], 0) = 0
|
||||||
OR CG.[HidePasswords] = 0
|
|
||||||
THEN 1
|
THEN 1
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END [ViewPassword],
|
END [ViewPassword],
|
||||||
@ -144,7 +142,14 @@ RETURNS TABLE
|
|||||||
AS RETURN
|
AS RETURN
|
||||||
SELECT
|
SELECT
|
||||||
C.*,
|
C.*,
|
||||||
COALESCE(CU.[ReadOnly], CG.[ReadOnly], 0) AS [ReadOnly],
|
CASE
|
||||||
|
WHEN
|
||||||
|
OU.[AccessAll] = 1
|
||||||
|
OR G.[AccessAll] = 1
|
||||||
|
OR COALESCE(CU.[ReadOnly], CG.[ReadOnly], 0) = 0
|
||||||
|
THEN 0
|
||||||
|
ELSE 1
|
||||||
|
END [ReadOnly],
|
||||||
COALESCE(CU.[HidePasswords], CG.[HidePasswords], 0) AS [HidePasswords]
|
COALESCE(CU.[HidePasswords], CG.[HidePasswords], 0) AS [HidePasswords]
|
||||||
FROM
|
FROM
|
||||||
[dbo].[CollectionView] C
|
[dbo].[CollectionView] C
|
||||||
@ -759,3 +764,179 @@ BEGIN
|
|||||||
EXEC [dbo].[User_BumpAccountRevisionDateByCollectionId] @Id, @OrganizationId
|
EXEC [dbo].[User_BumpAccountRevisionDateByCollectionId] @Id, @OrganizationId
|
||||||
END
|
END
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
IF OBJECT_ID('[dbo].[CipherDetails_Update]') IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
DROP PROCEDURE [dbo].[CipherDetails_Update]
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[CipherDetails_Update]
|
||||||
|
@Id UNIQUEIDENTIFIER,
|
||||||
|
@UserId UNIQUEIDENTIFIER,
|
||||||
|
@OrganizationId UNIQUEIDENTIFIER,
|
||||||
|
@Type TINYINT,
|
||||||
|
@Data NVARCHAR(MAX),
|
||||||
|
@Favorites NVARCHAR(MAX), -- not used
|
||||||
|
@Folders NVARCHAR(MAX), -- not used
|
||||||
|
@Attachments NVARCHAR(MAX), -- not used
|
||||||
|
@CreationDate DATETIME2(7),
|
||||||
|
@RevisionDate DATETIME2(7),
|
||||||
|
@FolderId UNIQUEIDENTIFIER,
|
||||||
|
@Favorite BIT,
|
||||||
|
@Edit BIT, -- not used
|
||||||
|
@ViewPassword BIT, -- not used
|
||||||
|
@OrganizationUseTotp BIT, -- not used
|
||||||
|
@DeletedDate DATETIME2(2)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON
|
||||||
|
|
||||||
|
DECLARE @UserIdKey VARCHAR(50) = CONCAT('"', @UserId, '"')
|
||||||
|
DECLARE @UserIdPath VARCHAR(50) = CONCAT('$.', @UserIdKey)
|
||||||
|
|
||||||
|
UPDATE
|
||||||
|
[dbo].[Cipher]
|
||||||
|
SET
|
||||||
|
[UserId] = CASE WHEN @OrganizationId IS NULL THEN @UserId ELSE NULL END,
|
||||||
|
[OrganizationId] = @OrganizationId,
|
||||||
|
[Type] = @Type,
|
||||||
|
[Data] = @Data,
|
||||||
|
[Folders] =
|
||||||
|
CASE
|
||||||
|
WHEN @FolderId IS NOT NULL AND [Folders] IS NULL THEN
|
||||||
|
CONCAT('{', @UserIdKey, ':"', @FolderId, '"', '}')
|
||||||
|
WHEN @FolderId IS NOT NULL THEN
|
||||||
|
JSON_MODIFY([Folders], @UserIdPath, CAST(@FolderId AS VARCHAR(50)))
|
||||||
|
ELSE
|
||||||
|
JSON_MODIFY([Folders], @UserIdPath, NULL)
|
||||||
|
END,
|
||||||
|
[Favorites] =
|
||||||
|
CASE
|
||||||
|
WHEN @Favorite = 1 AND [Favorites] IS NULL THEN
|
||||||
|
CONCAT('{', @UserIdKey, ':true}')
|
||||||
|
WHEN @Favorite = 1 THEN
|
||||||
|
JSON_MODIFY([Favorites], @UserIdPath, CAST(1 AS BIT))
|
||||||
|
ELSE
|
||||||
|
JSON_MODIFY([Favorites], @UserIdPath, NULL)
|
||||||
|
END,
|
||||||
|
[CreationDate] = @CreationDate,
|
||||||
|
[RevisionDate] = @RevisionDate,
|
||||||
|
[DeletedDate] = @DeletedDate
|
||||||
|
WHERE
|
||||||
|
[Id] = @Id
|
||||||
|
|
||||||
|
IF @OrganizationId IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
EXEC [dbo].[User_BumpAccountRevisionDateByCipherId] @Id, @OrganizationId
|
||||||
|
END
|
||||||
|
ELSE IF @UserId IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
EXEC [dbo].[User_BumpAccountRevisionDate] @UserId
|
||||||
|
END
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF OBJECT_ID('[dbo].[CipherDetails_Create]') IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
DROP PROCEDURE [dbo].[CipherDetails_Create]
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[CipherDetails_Create]
|
||||||
|
@Id UNIQUEIDENTIFIER,
|
||||||
|
@UserId UNIQUEIDENTIFIER,
|
||||||
|
@OrganizationId UNIQUEIDENTIFIER,
|
||||||
|
@Type TINYINT,
|
||||||
|
@Data NVARCHAR(MAX),
|
||||||
|
@Favorites NVARCHAR(MAX), -- not used
|
||||||
|
@Folders NVARCHAR(MAX), -- not used
|
||||||
|
@Attachments NVARCHAR(MAX), -- not used
|
||||||
|
@CreationDate DATETIME2(7),
|
||||||
|
@RevisionDate DATETIME2(7),
|
||||||
|
@FolderId UNIQUEIDENTIFIER,
|
||||||
|
@Favorite BIT,
|
||||||
|
@Edit BIT, -- not used
|
||||||
|
@ViewPassword BIT, -- not used
|
||||||
|
@OrganizationUseTotp BIT, -- not used
|
||||||
|
@DeletedDate DATETIME2(7)
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON
|
||||||
|
|
||||||
|
DECLARE @UserIdKey VARCHAR(50) = CONCAT('"', @UserId, '"')
|
||||||
|
DECLARE @UserIdPath VARCHAR(50) = CONCAT('$.', @UserIdKey)
|
||||||
|
|
||||||
|
INSERT INTO [dbo].[Cipher]
|
||||||
|
(
|
||||||
|
[Id],
|
||||||
|
[UserId],
|
||||||
|
[OrganizationId],
|
||||||
|
[Type],
|
||||||
|
[Data],
|
||||||
|
[Favorites],
|
||||||
|
[Folders],
|
||||||
|
[CreationDate],
|
||||||
|
[RevisionDate],
|
||||||
|
[DeletedDate]
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@Id,
|
||||||
|
CASE WHEN @OrganizationId IS NULL THEN @UserId ELSE NULL END,
|
||||||
|
@OrganizationId,
|
||||||
|
@Type,
|
||||||
|
@Data,
|
||||||
|
CASE WHEN @Favorite = 1 THEN CONCAT('{', @UserIdKey, ':true}') ELSE NULL END,
|
||||||
|
CASE WHEN @FolderId IS NOT NULL THEN CONCAT('{', @UserIdKey, ':"', @FolderId, '"', '}') ELSE NULL END,
|
||||||
|
@CreationDate,
|
||||||
|
@RevisionDate,
|
||||||
|
@DeletedDate
|
||||||
|
)
|
||||||
|
|
||||||
|
IF @OrganizationId IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
EXEC [dbo].[User_BumpAccountRevisionDateByCipherId] @Id, @OrganizationId
|
||||||
|
END
|
||||||
|
ELSE IF @UserId IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
EXEC [dbo].[User_BumpAccountRevisionDate] @UserId
|
||||||
|
END
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF OBJECT_ID('[dbo].[CipherDetails_Create]') IS NOT NULL
|
||||||
|
BEGIN
|
||||||
|
DROP PROCEDURE [dbo].[CipherDetails_Create]
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[CipherDetails_CreateWithCollections]
|
||||||
|
@Id UNIQUEIDENTIFIER,
|
||||||
|
@UserId UNIQUEIDENTIFIER,
|
||||||
|
@OrganizationId UNIQUEIDENTIFIER,
|
||||||
|
@Type TINYINT,
|
||||||
|
@Data NVARCHAR(MAX),
|
||||||
|
@Favorites NVARCHAR(MAX), -- not used
|
||||||
|
@Folders NVARCHAR(MAX), -- not used
|
||||||
|
@Attachments NVARCHAR(MAX), -- not used
|
||||||
|
@CreationDate DATETIME2(7),
|
||||||
|
@RevisionDate DATETIME2(7),
|
||||||
|
@FolderId UNIQUEIDENTIFIER,
|
||||||
|
@Favorite BIT,
|
||||||
|
@Edit BIT, -- not used
|
||||||
|
@ViewPassword BIT, -- not used
|
||||||
|
@OrganizationUseTotp BIT, -- not used
|
||||||
|
@DeletedDate DATETIME2(7),
|
||||||
|
@CollectionIds AS [dbo].[GuidIdArray] READONLY
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON
|
||||||
|
|
||||||
|
EXEC [dbo].[CipherDetails_Create] @Id, @UserId, @OrganizationId, @Type, @Data, @Favorites, @Folders,
|
||||||
|
@Attachments, @CreationDate, @RevisionDate, @FolderId, @Favorite, @Edit, @ViewPassword,
|
||||||
|
@OrganizationUseTotp, @DeletedDate
|
||||||
|
|
||||||
|
DECLARE @UpdateCollectionsSuccess INT
|
||||||
|
EXEC @UpdateCollectionsSuccess = [dbo].[Cipher_UpdateCollections] @Id, @UserId, @OrganizationId, @CollectionIds
|
||||||
|
END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user