1
0
mirror of https://github.com/bitwarden/server.git synced 2024-11-22 12:15:36 +01:00

disable premium membership

This commit is contained in:
Kyle Spearrin 2017-07-25 09:04:22 -04:00
parent 65a7d0001e
commit b7e8852250
3 changed files with 27 additions and 4 deletions

View File

@ -14,15 +14,18 @@ namespace Bit.Billing.Controllers
private readonly BillingSettings _billingSettings;
private readonly IHostingEnvironment _hostingEnvironment;
private readonly IOrganizationService _organizationService;
private readonly IUserService _userService;
public StripeController(
IOptions<BillingSettings> billingSettings,
IHostingEnvironment hostingEnvironment,
IOrganizationService organizationService)
IOrganizationService organizationService,
IUserService userService)
{
_billingSettings = billingSettings?.Value;
_hostingEnvironment = hostingEnvironment;
_organizationService = organizationService;
_userService = userService;
}
[HttpPost("webhook")]
@ -48,11 +51,19 @@ namespace Bit.Billing.Controllers
{
var subscription = Mapper<StripeSubscription>.MapFromJson(parsedEvent.Data.Object.ToString())
as StripeSubscription;
if(subscription?.Status == "canceled" && (subscription.Metadata?.ContainsKey("organizationId") ?? false))
if(subscription?.Status == "canceled")
{
if(subscription.Metadata?.ContainsKey("organizationId") ?? false)
{
var orgIdGuid = new Guid(subscription.Metadata["organizationId"]);
await _organizationService.DisableAsync(orgIdGuid);
}
else if(subscription.Metadata?.ContainsKey("userId") ?? false)
{
var userIdGuid = new Guid(subscription.Metadata["userId"]);
await _userService.DisablePremiumAsync(userIdGuid);
}
}
}
else
{

View File

@ -43,5 +43,6 @@ namespace Bit.Core.Services
Task ReplacePaymentMethodAsync(User user, string paymentToken);
Task CancelPremiumAsync(User user, bool endOfPeriod = false);
Task ReinstatePremiumAsync(User user);
Task DisablePremiumAsync(Guid userId);
}
}

View File

@ -610,6 +610,17 @@ namespace Bit.Core.Services
await BillingHelpers.ReinstateSubscriptionAsync(user);
}
public async Task DisablePremiumAsync(Guid userId)
{
var user = await _userRepository.GetByIdAsync(userId);
if(user != null && user.Premium)
{
user.Premium = false;
user.RevisionDate = DateTime.UtcNow;
await _userRepository.ReplaceAsync(user);
}
}
private async Task<IdentityResult> UpdatePasswordHash(User user, string newPassword, bool validatePassword = true)
{
if(validatePassword)