|
|
|
|
@ -19,6 +19,7 @@ using Bit.Core.Utilities;
@@ -19,6 +19,7 @@ using Bit.Core.Utilities;
|
|
|
|
|
using Bit.Core.Vault.Repositories; |
|
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
|
using Stripe; |
|
|
|
|
|
|
|
|
|
namespace Bit.Admin.Controllers; |
|
|
|
|
|
|
|
|
|
@ -47,6 +48,7 @@ public class OrganizationsController : Controller
@@ -47,6 +48,7 @@ public class OrganizationsController : Controller
|
|
|
|
|
private readonly ISecretRepository _secretRepository; |
|
|
|
|
private readonly IProjectRepository _projectRepository; |
|
|
|
|
private readonly IServiceAccountRepository _serviceAccountRepository; |
|
|
|
|
private readonly IStripeSyncService _stripeSyncService; |
|
|
|
|
|
|
|
|
|
public OrganizationsController( |
|
|
|
|
IOrganizationService organizationService, |
|
|
|
|
@ -70,7 +72,8 @@ public class OrganizationsController : Controller
@@ -70,7 +72,8 @@ public class OrganizationsController : Controller
|
|
|
|
|
ICurrentContext currentContext, |
|
|
|
|
ISecretRepository secretRepository, |
|
|
|
|
IProjectRepository projectRepository, |
|
|
|
|
IServiceAccountRepository serviceAccountRepository) |
|
|
|
|
IServiceAccountRepository serviceAccountRepository, |
|
|
|
|
IStripeSyncService stripeSyncService) |
|
|
|
|
{ |
|
|
|
|
_organizationService = organizationService; |
|
|
|
|
_organizationRepository = organizationRepository; |
|
|
|
|
@ -94,6 +97,7 @@ public class OrganizationsController : Controller
@@ -94,6 +97,7 @@ public class OrganizationsController : Controller
|
|
|
|
|
_secretRepository = secretRepository; |
|
|
|
|
_projectRepository = projectRepository; |
|
|
|
|
_serviceAccountRepository = serviceAccountRepository; |
|
|
|
|
_stripeSyncService = stripeSyncService; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[RequirePermission(Permission.Org_List_View)] |
|
|
|
|
@ -208,6 +212,16 @@ public class OrganizationsController : Controller
@@ -208,6 +212,16 @@ public class OrganizationsController : Controller
|
|
|
|
|
throw new BadRequestException("Plan does not support Secrets Manager"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
await _stripeSyncService.UpdateCustomerEmailAddress(organization.GatewayCustomerId, organization.BillingEmail); |
|
|
|
|
} |
|
|
|
|
catch (StripeException stripeException) |
|
|
|
|
{ |
|
|
|
|
_logger.LogError(stripeException, "Failed to update billing email address in Stripe for Organization with ID '{organizationId}'", organization.Id); |
|
|
|
|
throw; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
await _organizationRepository.ReplaceAsync(organization); |
|
|
|
|
await _applicationCacheService.UpsertOrganizationAbilityAsync(organization); |
|
|
|
|
await _referenceEventService.RaiseEventAsync(new ReferenceEvent(ReferenceEventType.OrganizationEditedByAdmin, organization, _currentContext) |
|
|
|
|
@ -215,6 +229,7 @@ public class OrganizationsController : Controller
@@ -215,6 +229,7 @@ public class OrganizationsController : Controller
|
|
|
|
|
EventRaisedByUser = _userService.GetUserName(User), |
|
|
|
|
SalesAssistedTrialStarted = model.SalesAssistedTrialStarted, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
return RedirectToAction("Edit", new { id }); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|