mirror of
https://github.com/bitwarden/server.git
synced 2025-05-09 21:52:17 -05:00
extract function OverwriteExisting()
This commit is contained in:
parent
5582f25b64
commit
2f4574f6b7
@ -82,22 +82,7 @@ public class ImportOrganizationUserCommand : IImportOrganizationUserCommand
|
|||||||
|
|
||||||
if (overwriteExisting)
|
if (overwriteExisting)
|
||||||
{
|
{
|
||||||
// Remove existing external users that are not in new user set
|
await OverwriteExisting(existingExternalUsers, existingExternalUsersIdDict, newUsersSet, events);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newUsers?.Any() ?? false)
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user