1
0
mirror of https://github.com/bitwarden/server synced 2025-12-14 15:23:42 +00:00

check for UserId in ReplaceAsync (#6176)

This commit is contained in:
Jordan Aasen
2025-08-25 14:00:41 -07:00
committed by GitHub
parent a7fc89a5bb
commit a4c4d0157b

View File

@@ -553,59 +553,61 @@ public class CipherRepository : Repository<Core.Vault.Entities.Cipher, Cipher, G
var entity = await dbContext.Ciphers.FindAsync(cipher.Id); var entity = await dbContext.Ciphers.FindAsync(cipher.Id);
if (entity != null) if (entity != null)
{ {
if (cipher.Favorite) if (cipher.UserId.HasValue)
{ {
if (cipher.Favorites == null) if (cipher.Favorite)
{ {
var jsonObject = new JsonObject(new[] if (cipher.Favorites == null)
{ {
var jsonObject = new JsonObject(new[]
{
new KeyValuePair<string, JsonNode>(cipher.UserId.Value.ToString(), true), new KeyValuePair<string, JsonNode>(cipher.UserId.Value.ToString(), true),
}); });
cipher.Favorites = JsonSerializer.Serialize(jsonObject); cipher.Favorites = JsonSerializer.Serialize(jsonObject);
}
else
{
var favorites = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, bool>>(cipher.Favorites);
favorites.Add(cipher.UserId.Value, true);
cipher.Favorites = JsonSerializer.Serialize(favorites);
}
} }
else else
{ {
var favorites = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, bool>>(cipher.Favorites); if (cipher.Favorites != null && cipher.Favorites.Contains(cipher.UserId.Value.ToString()))
favorites.Add(cipher.UserId.Value, true);
cipher.Favorites = JsonSerializer.Serialize(favorites);
}
}
else
{
if (cipher.Favorites != null && cipher.Favorites.Contains(cipher.UserId.Value.ToString()))
{
var favorites = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, bool>>(cipher.Favorites);
favorites.Remove(cipher.UserId.Value);
cipher.Favorites = JsonSerializer.Serialize(favorites);
}
}
if (cipher.FolderId.HasValue)
{
if (cipher.Folders == null)
{
var jsonObject = new JsonObject(new[]
{ {
var favorites = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, bool>>(cipher.Favorites);
favorites.Remove(cipher.UserId.Value);
cipher.Favorites = JsonSerializer.Serialize(favorites);
}
}
if (cipher.FolderId.HasValue)
{
if (cipher.Folders == null)
{
var jsonObject = new JsonObject(new[]
{
new KeyValuePair<string, JsonNode>(cipher.UserId.Value.ToString(), cipher.FolderId), new KeyValuePair<string, JsonNode>(cipher.UserId.Value.ToString(), cipher.FolderId),
}); });
cipher.Folders = JsonSerializer.Serialize(jsonObject); cipher.Folders = JsonSerializer.Serialize(jsonObject);
}
else
{
var folders = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, Guid>>(cipher.Folders);
folders.Add(cipher.UserId.Value, cipher.FolderId.Value);
cipher.Folders = JsonSerializer.Serialize(folders);
}
} }
else else
{ {
var folders = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, Guid>>(cipher.Folders); if (cipher.Folders != null && cipher.Folders.Contains(cipher.UserId.Value.ToString()))
folders.Add(cipher.UserId.Value, cipher.FolderId.Value); {
cipher.Folders = JsonSerializer.Serialize(folders); var folders = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, Guid>>(cipher.Folders);
folders.Remove(cipher.UserId.Value);
cipher.Folders = JsonSerializer.Serialize(folders);
}
} }
} }
else
{
if (cipher.Folders != null && cipher.Folders.Contains(cipher.UserId.Value.ToString()))
{
var folders = CoreHelpers.LoadClassFromJsonData<Dictionary<Guid, Guid>>(cipher.Folders);
folders.Remove(cipher.UserId.Value);
cipher.Folders = JsonSerializer.Serialize(folders);
}
}
// Check if this cipher is a part of an organization, and if so do // Check if this cipher is a part of an organization, and if so do
// not save the UserId into the database. This must be done after we // not save the UserId into the database. This must be done after we
// set the user specific data like Folders and Favorites because // set the user specific data like Folders and Favorites because