diff --git a/src/Core/Models/Table/FolderCipher.cs b/src/Core/Models/Table/FolderCipher.cs index 9551314800..19ac18db8f 100644 --- a/src/Core/Models/Table/FolderCipher.cs +++ b/src/Core/Models/Table/FolderCipher.cs @@ -6,5 +6,6 @@ namespace Bit.Core.Models.Table { public Guid CipherId { get; set; } public Guid FolderId { get; set; } + public Guid UserId { get; set; } } } diff --git a/src/Core/Repositories/SqlServer/CipherRepository.cs b/src/Core/Repositories/SqlServer/CipherRepository.cs index f91fa5c809..c7219f4e33 100644 --- a/src/Core/Repositories/SqlServer/CipherRepository.cs +++ b/src/Core/Repositories/SqlServer/CipherRepository.cs @@ -401,10 +401,13 @@ namespace Bit.Core.Repositories.SqlServer folderCiphersTable.Columns.Add(folderIdColumn); var cipherIdColumn = new DataColumn(nameof(f.CipherId), f.CipherId.GetType()); folderCiphersTable.Columns.Add(cipherIdColumn); + var userIdColumn = new DataColumn(nameof(f.UserId), f.UserId.GetType()); + folderCiphersTable.Columns.Add(userIdColumn); - var keys = new DataColumn[2]; + var keys = new DataColumn[3]; keys[0] = folderIdColumn; keys[1] = cipherIdColumn; + keys[2] = userIdColumn; folderCiphersTable.PrimaryKey = keys; foreach(var folderCipher in folderCiphers) @@ -413,6 +416,7 @@ namespace Bit.Core.Repositories.SqlServer row[folderIdColumn] = folderCipher.FolderId; row[cipherIdColumn] = folderCipher.CipherId; + row[userIdColumn] = folderCipher.UserId; folderCiphersTable.Rows.Add(row); } diff --git a/src/Core/Services/Implementations/CipherService.cs b/src/Core/Services/Implementations/CipherService.cs index d665ebefea..e843fa9e04 100644 --- a/src/Core/Services/Implementations/CipherService.cs +++ b/src/Core/Services/Implementations/CipherService.cs @@ -223,7 +223,8 @@ namespace Bit.Core.Services folderCiphers.Add(new FolderCipher { FolderId = folder.Id, - CipherId = cipher.Id + CipherId = cipher.Id, + UserId = folder.UserId }); } diff --git a/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByIdUserId.sql b/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByIdUserId.sql index 92e1f4c186..a8b7e4d19f 100644 --- a/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByIdUserId.sql +++ b/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByIdUserId.sql @@ -20,7 +20,12 @@ BEGIN WHERE C.Id = @Id AND ( - (C.[UserId] IS NOT NULL AND C.[UserId] = @UserId) - OR (OU.[UserId] = @UserId AND OU.[Status] = 2 AND O.[Enabled] = 1) -- 2 = Confirmed + C.[UserId] = @UserId + OR ( + C.[UserId] IS NULL + AND OU.[UserId] = @UserId + AND OU.[Status] = 2 -- 2 = Confirmed + AND O.[Enabled] = 1 + ) ) END \ No newline at end of file diff --git a/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByTypeUserId.sql b/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByTypeUserId.sql index 3fc19deef7..40f707ff6b 100644 --- a/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByTypeUserId.sql +++ b/src/Sql/dbo/Stored Procedures/CipherDetails_ReadByTypeUserId.sql @@ -20,7 +20,12 @@ BEGIN WHERE C.[Type] = @Type AND ( - (C.[UserId] IS NOT NULL AND C.[UserId] = @UserId) - OR (OU.[UserId] = @UserId AND OU.[Status] = 2 AND O.[Enabled] = 1) -- 2 = Confirmed + C.[UserId] = @UserId + OR ( + C.[UserId] IS NULL + AND OU.[UserId] = @UserId + AND OU.[Status] = 2 -- 2 = Confirmed + AND O.[Enabled] = 1 + ) ) END \ No newline at end of file