mirror of
https://github.com/bitwarden/server.git
synced 2025-07-03 00:52:49 -05:00
[AC-1139] Reverted changes on OrganizationService
This commit is contained in:
@ -888,6 +888,7 @@ public class OrganizationService : IOrganizationService
|
|||||||
throw new BadRequestException("Organization must have at least one confirmed owner.");
|
throw new BadRequestException("Organization must have at least one confirmed owner.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var orgUsers = new List<OrganizationUser>();
|
||||||
var limitedCollectionOrgUsers = new List<(OrganizationUser, IEnumerable<CollectionAccessSelection>)>();
|
var limitedCollectionOrgUsers = new List<(OrganizationUser, IEnumerable<CollectionAccessSelection>)>();
|
||||||
var orgUserGroups = new List<(OrganizationUser, IEnumerable<Guid>)>();
|
var orgUserGroups = new List<(OrganizationUser, IEnumerable<Guid>)>();
|
||||||
var orgUserInvitedCount = 0;
|
var orgUserInvitedCount = 0;
|
||||||
@ -930,7 +931,14 @@ public class OrganizationService : IOrganizationService
|
|||||||
// grant Manage permission for all assigned collections
|
// grant Manage permission for all assigned collections
|
||||||
invite.Collections = ApplyManageCollectionPermissions(orgUser, invite.Collections);
|
invite.Collections = ApplyManageCollectionPermissions(orgUser, invite.Collections);
|
||||||
|
|
||||||
limitedCollectionOrgUsers.Add((orgUser, invite.Collections));
|
if (!orgUser.AccessAll && invite.Collections.Any())
|
||||||
|
{
|
||||||
|
limitedCollectionOrgUsers.Add((orgUser, invite.Collections));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
orgUsers.Add(orgUser);
|
||||||
|
}
|
||||||
|
|
||||||
if (invite.Groups != null && invite.Groups.Any())
|
if (invite.Groups != null && invite.Groups.Any())
|
||||||
{
|
{
|
||||||
@ -955,6 +963,7 @@ public class OrganizationService : IOrganizationService
|
|||||||
var prorationDate = DateTime.UtcNow;
|
var prorationDate = DateTime.UtcNow;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
await _organizationUserRepository.CreateManyAsync(orgUsers);
|
||||||
foreach (var (orgUser, collections) in limitedCollectionOrgUsers)
|
foreach (var (orgUser, collections) in limitedCollectionOrgUsers)
|
||||||
{
|
{
|
||||||
await _organizationUserRepository.CreateAsync(orgUser, collections);
|
await _organizationUserRepository.CreateAsync(orgUser, collections);
|
||||||
@ -976,7 +985,7 @@ public class OrganizationService : IOrganizationService
|
|||||||
await _updateSecretsManagerSubscriptionCommand.UpdateSubscriptionAsync(smSubscriptionUpdate);
|
await _updateSecretsManagerSubscriptionCommand.UpdateSubscriptionAsync(smSubscriptionUpdate);
|
||||||
}
|
}
|
||||||
await AutoAddSeatsAsync(organization, newSeatsRequired, prorationDate);
|
await AutoAddSeatsAsync(organization, newSeatsRequired, prorationDate);
|
||||||
await SendInvitesAsync(limitedCollectionOrgUsers.Select(u => u.Item1), organization);
|
await SendInvitesAsync(orgUsers.Concat(limitedCollectionOrgUsers.Select(u => u.Item1)), organization);
|
||||||
|
|
||||||
await _referenceEventService.RaiseEventAsync(
|
await _referenceEventService.RaiseEventAsync(
|
||||||
new ReferenceEvent(ReferenceEventType.InvitedUsers, organization, _currentContext)
|
new ReferenceEvent(ReferenceEventType.InvitedUsers, organization, _currentContext)
|
||||||
@ -987,7 +996,7 @@ public class OrganizationService : IOrganizationService
|
|||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
// Revert any added users.
|
// Revert any added users.
|
||||||
var invitedOrgUserIds = limitedCollectionOrgUsers.Select(u => u.Item1.Id);
|
var invitedOrgUserIds = orgUsers.Select(u => u.Id).Concat(limitedCollectionOrgUsers.Select(u => u.Item1.Id));
|
||||||
await _organizationUserRepository.DeleteManyAsync(invitedOrgUserIds);
|
await _organizationUserRepository.DeleteManyAsync(invitedOrgUserIds);
|
||||||
var currentOrganization = await _organizationRepository.GetByIdAsync(organization.Id);
|
var currentOrganization = await _organizationRepository.GetByIdAsync(organization.Id);
|
||||||
|
|
||||||
@ -1017,7 +1026,7 @@ public class OrganizationService : IOrganizationService
|
|||||||
throw new AggregateException("One or more errors occurred while inviting users.", exceptions);
|
throw new AggregateException("One or more errors occurred while inviting users.", exceptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (limitedCollectionOrgUsers.Select(o => o.Item1).ToList(), events);
|
return (orgUsers, events);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<Tuple<OrganizationUser, string>>> ResendInvitesAsync(Guid organizationId, Guid? invitingUserId,
|
public async Task<IEnumerable<Tuple<OrganizationUser, string>>> ResendInvitesAsync(Guid organizationId, Guid? invitingUserId,
|
||||||
|
@ -76,11 +76,8 @@ public class OrganizationServiceTests
|
|||||||
.CreateAsync(default);
|
.CreateAsync(default);
|
||||||
|
|
||||||
// Create new users
|
// Create new users
|
||||||
await sutProvider.GetDependency<IOrganizationUserRepository>().Received(expectedNewUsersCount)
|
await sutProvider.GetDependency<IOrganizationUserRepository>().Received(1)
|
||||||
.CreateAsync(
|
.CreateManyAsync(Arg.Is<IEnumerable<OrganizationUser>>(users => users.Count() == expectedNewUsersCount));
|
||||||
Arg.Is<OrganizationUser>(user => user.Status == OrganizationUserStatusType.Invited
|
|
||||||
&& newUsers.Any(u => string.Equals(u.Email, user.Email, StringComparison.InvariantCultureIgnoreCase))),
|
|
||||||
Arg.Any<IEnumerable<CollectionAccessSelection>>());
|
|
||||||
await sutProvider.GetDependency<IMailService>().Received(1)
|
await sutProvider.GetDependency<IMailService>().Received(1)
|
||||||
.BulkSendOrganizationInviteEmailAsync(org.Name,
|
.BulkSendOrganizationInviteEmailAsync(org.Name,
|
||||||
Arg.Is<IEnumerable<(OrganizationUser, ExpiringToken)>>(messages => messages.Count() == expectedNewUsersCount), org.PlanType == PlanType.Free);
|
Arg.Is<IEnumerable<(OrganizationUser, ExpiringToken)>>(messages => messages.Count() == expectedNewUsersCount), org.PlanType == PlanType.Free);
|
||||||
@ -129,17 +126,16 @@ public class OrganizationServiceTests
|
|||||||
.UpsertAsync(default);
|
.UpsertAsync(default);
|
||||||
await sutProvider.GetDependency<IOrganizationUserRepository>().DidNotReceiveWithAnyArgs()
|
await sutProvider.GetDependency<IOrganizationUserRepository>().DidNotReceiveWithAnyArgs()
|
||||||
.CreateAsync(default);
|
.CreateAsync(default);
|
||||||
|
await sutProvider.GetDependency<IOrganizationUserRepository>().DidNotReceiveWithAnyArgs()
|
||||||
|
.CreateAsync(default, default);
|
||||||
|
|
||||||
// Upserted existing user
|
// Upserted existing user
|
||||||
await sutProvider.GetDependency<IOrganizationUserRepository>().Received(1)
|
await sutProvider.GetDependency<IOrganizationUserRepository>().Received(1)
|
||||||
.UpsertManyAsync(Arg.Is<IEnumerable<OrganizationUser>>(users => users.Count() == 1));
|
.UpsertManyAsync(Arg.Is<IEnumerable<OrganizationUser>>(users => users.Count() == 1));
|
||||||
|
|
||||||
// Created and invited new users
|
// Created and invited new users
|
||||||
await sutProvider.GetDependency<IOrganizationUserRepository>().Received(expectedNewUsersCount)
|
await sutProvider.GetDependency<IOrganizationUserRepository>().Received(1)
|
||||||
.CreateAsync(
|
.CreateManyAsync(Arg.Is<IEnumerable<OrganizationUser>>(users => users.Count() == expectedNewUsersCount));
|
||||||
Arg.Is<OrganizationUser>(user => user.Status == OrganizationUserStatusType.Invited
|
|
||||||
&& newUsers.Any(u => string.Equals(u.Email, user.Email, StringComparison.InvariantCultureIgnoreCase))),
|
|
||||||
Arg.Any<IEnumerable<CollectionAccessSelection>>());
|
|
||||||
await sutProvider.GetDependency<IMailService>().Received(1)
|
await sutProvider.GetDependency<IMailService>().Received(1)
|
||||||
.BulkSendOrganizationInviteEmailAsync(org.Name,
|
.BulkSendOrganizationInviteEmailAsync(org.Name,
|
||||||
Arg.Is<IEnumerable<(OrganizationUser, ExpiringToken)>>(messages => messages.Count() == expectedNewUsersCount), org.PlanType == PlanType.Free);
|
Arg.Is<IEnumerable<(OrganizationUser, ExpiringToken)>>(messages => messages.Count() == expectedNewUsersCount), org.PlanType == PlanType.Free);
|
||||||
|
Reference in New Issue
Block a user