mirror of
https://github.com/bitwarden/server.git
synced 2025-05-13 07:32:17 -05:00
Refactor ResellerClientOrganizationSignUpCommand to remove unused dependencies and simplify SignupClientAsync method signature
This commit is contained in:
parent
a37da22cd5
commit
0daca9e22c
@ -6,5 +6,5 @@ namespace Bit.Core.AdminConsole.OrganizationFeatures.Organizations.Interfaces;
|
|||||||
|
|
||||||
public interface IResellerClientOrganizationSignUpCommand
|
public interface IResellerClientOrganizationSignUpCommand
|
||||||
{
|
{
|
||||||
Task<(Organization organization, OrganizationUser organizationUser, Collection defaultCollection)> SignupClientAsync(OrganizationSignup signup);
|
Task<(Organization organization, Collection defaultCollection)> SignupClientAsync(OrganizationSignup signup);
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,7 @@ using Bit.Core.Entities;
|
|||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Exceptions;
|
using Bit.Core.Exceptions;
|
||||||
using Bit.Core.Models.Business;
|
using Bit.Core.Models.Business;
|
||||||
using Bit.Core.Models.Data;
|
|
||||||
using Bit.Core.Models.StaticStore;
|
using Bit.Core.Models.StaticStore;
|
||||||
using Bit.Core.Platform.Push;
|
|
||||||
using Bit.Core.Repositories;
|
using Bit.Core.Repositories;
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Bit.Core.Tools.Enums;
|
using Bit.Core.Tools.Enums;
|
||||||
@ -26,9 +24,6 @@ public class ResellerClientOrganizationSignUpCommand : IResellerClientOrganizati
|
|||||||
private readonly IOrganizationRepository _organizationRepository;
|
private readonly IOrganizationRepository _organizationRepository;
|
||||||
private readonly IOrganizationApiKeyRepository _organizationApiKeyRepository;
|
private readonly IOrganizationApiKeyRepository _organizationApiKeyRepository;
|
||||||
private readonly IApplicationCacheService _applicationCacheService;
|
private readonly IApplicationCacheService _applicationCacheService;
|
||||||
private readonly IOrganizationUserRepository _organizationUserRepository;
|
|
||||||
private readonly IPushRegistrationService _pushRegistrationService;
|
|
||||||
private readonly IPushNotificationService _pushNotificationService;
|
|
||||||
private readonly ICollectionRepository _collectionRepository;
|
private readonly ICollectionRepository _collectionRepository;
|
||||||
private readonly IDeviceRepository _deviceRepository;
|
private readonly IDeviceRepository _deviceRepository;
|
||||||
private readonly IPaymentService _paymentService;
|
private readonly IPaymentService _paymentService;
|
||||||
@ -40,9 +35,6 @@ public class ResellerClientOrganizationSignUpCommand : IResellerClientOrganizati
|
|||||||
IOrganizationRepository organizationRepository,
|
IOrganizationRepository organizationRepository,
|
||||||
IOrganizationApiKeyRepository organizationApiKeyRepository,
|
IOrganizationApiKeyRepository organizationApiKeyRepository,
|
||||||
IApplicationCacheService applicationCacheService,
|
IApplicationCacheService applicationCacheService,
|
||||||
IOrganizationUserRepository organizationUserRepository,
|
|
||||||
IPushRegistrationService pushRegistrationService,
|
|
||||||
IPushNotificationService pushNotificationService,
|
|
||||||
ICollectionRepository collectionRepository,
|
ICollectionRepository collectionRepository,
|
||||||
IDeviceRepository deviceRepository,
|
IDeviceRepository deviceRepository,
|
||||||
IPaymentService paymentService)
|
IPaymentService paymentService)
|
||||||
@ -53,15 +45,12 @@ public class ResellerClientOrganizationSignUpCommand : IResellerClientOrganizati
|
|||||||
_organizationRepository = organizationRepository;
|
_organizationRepository = organizationRepository;
|
||||||
_organizationApiKeyRepository = organizationApiKeyRepository;
|
_organizationApiKeyRepository = organizationApiKeyRepository;
|
||||||
_applicationCacheService = applicationCacheService;
|
_applicationCacheService = applicationCacheService;
|
||||||
_organizationUserRepository = organizationUserRepository;
|
|
||||||
_pushRegistrationService = pushRegistrationService;
|
|
||||||
_pushNotificationService = pushNotificationService;
|
|
||||||
_collectionRepository = collectionRepository;
|
_collectionRepository = collectionRepository;
|
||||||
_deviceRepository = deviceRepository;
|
_deviceRepository = deviceRepository;
|
||||||
_paymentService = paymentService;
|
_paymentService = paymentService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<(Organization organization, OrganizationUser organizationUser, Collection defaultCollection)> SignupClientAsync(OrganizationSignup signup)
|
public async Task<(Organization organization, Collection defaultCollection)> SignupClientAsync(OrganizationSignup signup)
|
||||||
{
|
{
|
||||||
var plan = await _pricingClient.GetPlanOrThrow(signup.Plan);
|
var plan = await _pricingClient.GetPlanOrThrow(signup.Plan);
|
||||||
|
|
||||||
@ -105,7 +94,7 @@ public class ResellerClientOrganizationSignUpCommand : IResellerClientOrganizati
|
|||||||
UseSecretsManager = false,
|
UseSecretsManager = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
var returnValue = await SignUpAsync(organization, default, signup.OwnerKey, signup.CollectionName, false);
|
var returnValue = await SignUpAsync(organization, signup.CollectionName);
|
||||||
|
|
||||||
await _referenceEventService.RaiseEventAsync(
|
await _referenceEventService.RaiseEventAsync(
|
||||||
new ReferenceEvent(ReferenceEventType.Signup, organization, _currentContext)
|
new ReferenceEvent(ReferenceEventType.Signup, organization, _currentContext)
|
||||||
@ -142,8 +131,8 @@ public class ResellerClientOrganizationSignUpCommand : IResellerClientOrganizati
|
|||||||
/// Private helper method to create a new organization.
|
/// Private helper method to create a new organization.
|
||||||
/// This is common code used by both the cloud and self-hosted methods.
|
/// This is common code used by both the cloud and self-hosted methods.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private async Task<(Organization organization, OrganizationUser organizationUser, Collection defaultCollection)> SignUpAsync(Organization organization,
|
private async Task<(Organization organization, Collection defaultCollection)> SignUpAsync(Organization organization,
|
||||||
Guid ownerId, string ownerKey, string collectionName, bool withPayment)
|
string collectionName)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -157,32 +146,6 @@ public class ResellerClientOrganizationSignUpCommand : IResellerClientOrganizati
|
|||||||
});
|
});
|
||||||
await _applicationCacheService.UpsertOrganizationAbilityAsync(organization);
|
await _applicationCacheService.UpsertOrganizationAbilityAsync(organization);
|
||||||
|
|
||||||
// ownerId == default if the org is created by a provider - in this case it's created without an
|
|
||||||
// owner and the first owner is immediately invited afterwards
|
|
||||||
OrganizationUser orgUser = null;
|
|
||||||
if (ownerId != default)
|
|
||||||
{
|
|
||||||
orgUser = new OrganizationUser
|
|
||||||
{
|
|
||||||
OrganizationId = organization.Id,
|
|
||||||
UserId = ownerId,
|
|
||||||
Key = ownerKey,
|
|
||||||
AccessSecretsManager = organization.UseSecretsManager,
|
|
||||||
Type = OrganizationUserType.Owner,
|
|
||||||
Status = OrganizationUserStatusType.Confirmed,
|
|
||||||
CreationDate = organization.CreationDate,
|
|
||||||
RevisionDate = organization.CreationDate
|
|
||||||
};
|
|
||||||
orgUser.SetNewId();
|
|
||||||
|
|
||||||
await _organizationUserRepository.CreateAsync(orgUser);
|
|
||||||
|
|
||||||
var devices = await GetUserDeviceIdsAsync(orgUser.UserId.Value);
|
|
||||||
await _pushRegistrationService.AddUserRegistrationOrganizationAsync(devices,
|
|
||||||
organization.Id.ToString());
|
|
||||||
await _pushNotificationService.PushSyncOrgKeysAsync(ownerId);
|
|
||||||
}
|
|
||||||
|
|
||||||
Collection defaultCollection = null;
|
Collection defaultCollection = null;
|
||||||
if (!string.IsNullOrWhiteSpace(collectionName))
|
if (!string.IsNullOrWhiteSpace(collectionName))
|
||||||
{
|
{
|
||||||
@ -194,27 +157,14 @@ public class ResellerClientOrganizationSignUpCommand : IResellerClientOrganizati
|
|||||||
RevisionDate = organization.CreationDate
|
RevisionDate = organization.CreationDate
|
||||||
};
|
};
|
||||||
|
|
||||||
// Give the owner Can Manage access over the default collection
|
await _collectionRepository.CreateAsync(defaultCollection, null, null);
|
||||||
List<CollectionAccessSelection> defaultOwnerAccess = null;
|
|
||||||
if (orgUser != null)
|
|
||||||
{
|
|
||||||
defaultOwnerAccess =
|
|
||||||
[new CollectionAccessSelection { Id = orgUser.Id, HidePasswords = false, ReadOnly = false, Manage = true }];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await _collectionRepository.CreateAsync(defaultCollection, null, defaultOwnerAccess);
|
return (organization, defaultCollection);
|
||||||
}
|
|
||||||
|
|
||||||
return (organization, orgUser, defaultCollection);
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
if (withPayment)
|
if (organization.Id != default)
|
||||||
{
|
|
||||||
await _paymentService.CancelAndRecoverChargesAsync(organization);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (organization.Id != default(Guid))
|
|
||||||
{
|
{
|
||||||
await _organizationRepository.DeleteAsync(organization);
|
await _organizationRepository.DeleteAsync(organization);
|
||||||
await _applicationCacheService.DeleteOrganizationAbilityAsync(organization.Id);
|
await _applicationCacheService.DeleteOrganizationAbilityAsync(organization.Id);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user