1
0
mirror of https://github.com/bitwarden/server.git synced 2025-05-10 06:02:24 -05:00

extract function OverwriteExisting()

This commit is contained in:
Brandon 2025-05-06 17:04:56 -04:00
parent 5582f25b64
commit 2f4574f6b7
No known key found for this signature in database
GPG Key ID: A0E0EF0B207BA40D

View File

@ -82,22 +82,7 @@ public class ImportOrganizationUserCommand : IImportOrganizationUserCommand
if (overwriteExisting)
{
// Remove existing external users that are not in new user set
var usersToDelete = existingExternalUsers.Where(u =>
u.Type != OrganizationUserType.Owner &&
!newUsersSet.Contains(u.ExternalId) &&
existingExternalUsersIdDict.ContainsKey(u.ExternalId));
await _organizationUserRepository.DeleteManyAsync(usersToDelete.Select(u => u.Id));
events.AddRange(usersToDelete.Select(u => (
u,
EventType.OrganizationUser_Removed,
(DateTime?)DateTime.UtcNow
))
);
foreach (var deletedUser in usersToDelete)
{
existingExternalUsersIdDict.Remove(deletedUser.ExternalId);
}
await OverwriteExisting(existingExternalUsers, existingExternalUsersIdDict, newUsersSet, events);
}
if (newUsers?.Any() ?? false)
@ -293,4 +278,30 @@ public class ImportOrganizationUserCommand : IImportOrganizationUserCommand
}
}
private async Task OverwriteExisting(
IEnumerable<OrganizationUserUserDetails> existingExternalUsers,
IDictionary<string, Guid> existingExternalUsersIdDict,
HashSet<string> newUsersSet,
List<(OrganizationUserUserDetails ou, EventType e, DateTime? d)> events
)
{
// Remove existing external users that are not in new user set
var usersToDelete = existingExternalUsers.Where(u =>
u.Type != OrganizationUserType.Owner &&
!newUsersSet.Contains(u.ExternalId) &&
existingExternalUsersIdDict.ContainsKey(u.ExternalId));
await _organizationUserRepository.DeleteManyAsync(usersToDelete.Select(u => u.Id));
events.AddRange(usersToDelete.Select(u => (
u,
EventType.OrganizationUser_Removed,
(DateTime?)DateTime.UtcNow
))
);
foreach (var deletedUser in usersToDelete)
{
existingExternalUsersIdDict.Remove(deletedUser.ExternalId);
}
}
}