Skip to content

Commit

Permalink
[AC-2000] Get 400 response code when a secrets manager is not enabled…
Browse files Browse the repository at this point in the history
… for Organisation while password Manager is Updated (bitwarden#3612)

* fix the bug

* resolve qa comments
  • Loading branch information
cyprain-okeke authored Dec 22, 2023
1 parent cedbea4 commit 506d0aa
Showing 1 changed file with 28 additions and 9 deletions.
37 changes: 28 additions & 9 deletions src/Api/Billing/Public/Controllers/OrganizationController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,23 @@ public OrganizationController(
[ProducesResponseType((int)HttpStatusCode.NotFound)]
public async Task<IActionResult> PostSubscriptionAsync([FromBody] OrganizationSubscriptionUpdateRequestModel model)
{
try
{
await UpdatePasswordManagerAsync(model, _currentContext.OrganizationId.Value);

await UpdatePasswordManagerAsync(model, _currentContext.OrganizationId.Value);
var secretsManagerResult = await UpdateSecretsManagerAsync(model, _currentContext.OrganizationId.Value);

await UpdateSecretsManagerAsync(model, _currentContext.OrganizationId.Value);
if (!string.IsNullOrEmpty(secretsManagerResult))
{
return Ok(new { Message = secretsManagerResult });
}

return new OkResult();
return Ok(new { Message = "Subscription updated successfully." });
}
catch (Exception ex)
{
return StatusCode(500, new { Message = "An error occurred while updating the subscription." });
}
}

private async Task UpdatePasswordManagerAsync(OrganizationSubscriptionUpdateRequestModel model, Guid organizationId)
Expand All @@ -67,15 +78,23 @@ await _organizationService.UpdateSubscription(organization.Id, (int)model.Passwo
}
}

private async Task UpdateSecretsManagerAsync(OrganizationSubscriptionUpdateRequestModel model, Guid organizationId)
private async Task<string> UpdateSecretsManagerAsync(OrganizationSubscriptionUpdateRequestModel model, Guid organizationId)
{
if (model.SecretsManager != null)
if (model.SecretsManager == null)
{
var organization =
await _organizationRepository.GetByIdAsync(organizationId);
return string.Empty;
}

var organization = await _organizationRepository.GetByIdAsync(organizationId);

var organizationUpdate = model.SecretsManager.ToSecretsManagerSubscriptionUpdate(organization);
await _updateSecretsManagerSubscriptionCommand.UpdateSubscriptionAsync(organizationUpdate);
if (!organization.UseSecretsManager)
{
return "Organization has no access to Secrets Manager.";
}

var secretsManagerUpdate = model.SecretsManager.ToSecretsManagerSubscriptionUpdate(organization);
await _updateSecretsManagerSubscriptionCommand.UpdateSubscriptionAsync(secretsManagerUpdate);

return string.Empty;
}
}

0 comments on commit 506d0aa

Please sign in to comment.