diff --git a/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs b/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs
index 6e954e030c..40f2a79887 100644
--- a/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs
+++ b/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs
@@ -1,4 +1,6 @@
-using System.Diagnostics;
+#nullable enable
+
+using System.Diagnostics;
using Bit.Core.AdminConsole.Enums.Provider;
using Bit.Core.Auth.Enums;
using Bit.Core.Enums;
@@ -11,8 +13,18 @@ namespace Bit.Infrastructure.EntityFramework.Repositories;
public static class DatabaseContextExtensions
{
+ ///
+ /// Bump the account revision date for the user.
+ /// The caller is responsible for providing a valid UserId (not a null or default Guid) for a user that exists
+ /// in the database.
+ ///
public static async Task UserBumpAccountRevisionDateAsync(this DatabaseContext context, Guid userId)
{
+ if (userId == Guid.Empty)
+ {
+ throw new ArgumentException("Invalid UserId.");
+ }
+
var user = await context.Users.FindAsync(userId);
Debug.Assert(user is not null, "The user id is expected to be validated as a true-in database user before making this call.");
user.AccountRevisionDate = DateTime.UtcNow;
diff --git a/src/Infrastructure.EntityFramework/Vault/Repositories/CipherRepository.cs b/src/Infrastructure.EntityFramework/Vault/Repositories/CipherRepository.cs
index 090c36ff29..5ecc408777 100644
--- a/src/Infrastructure.EntityFramework/Vault/Repositories/CipherRepository.cs
+++ b/src/Infrastructure.EntityFramework/Vault/Repositories/CipherRepository.cs
@@ -144,6 +144,7 @@ public class CipherRepository : Repository ciphers, IEnumerable folders)
{
+ ciphers = ciphers.ToList();
if (!ciphers.Any())
{
return;
@@ -156,7 +157,14 @@ public class CipherRepository : Repository>(ciphers);
await dbContext.BulkCopyAsync(base.DefaultBulkCopyOptions, cipherEntities);
- await dbContext.UserBumpAccountRevisionDateAsync(ciphers.First().UserId.GetValueOrDefault());
+
+ // Assumption: all ciphers belong to the same user
+ var userId = ciphers.FirstOrDefault(c => c.UserId.HasValue)?.UserId;
+ if (userId != null)
+ {
+ await dbContext.UserBumpAccountRevisionDateAsync(userId.Value);
+ }
+
await dbContext.SaveChangesAsync();
}
}