diff --git a/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs b/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs index 42263aa88b..a8c9fa622d 100644 --- a/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs +++ b/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs @@ -76,6 +76,13 @@ public class OrganizationSponsorshipsController : Controller public async Task CreateSponsorship(Guid sponsoringOrgId, [FromBody] OrganizationSponsorshipCreateRequestModel model) { var sponsoringOrg = await _organizationRepository.GetByIdAsync(sponsoringOrgId); + var freeFamiliesSponsorshipPolicy = await _policyRepository.GetByOrganizationIdTypeAsync(sponsoringOrgId, + PolicyType.FreeFamiliesSponsorshipPolicy); + + if (freeFamiliesSponsorshipPolicy?.Enabled == true) + { + throw new BadRequestException("Free Bitwarden Families sponsorship has been disabled by your organization administrator."); + } var sponsorship = await _createSponsorshipCommand.CreateSponsorshipAsync( sponsoringOrg, @@ -89,6 +96,14 @@ public class OrganizationSponsorshipsController : Controller [SelfHosted(NotSelfHostedOnly = true)] public async Task ResendSponsorshipOffer(Guid sponsoringOrgId) { + var freeFamiliesSponsorshipPolicy = await _policyRepository.GetByOrganizationIdTypeAsync(sponsoringOrgId, + PolicyType.FreeFamiliesSponsorshipPolicy); + + if (freeFamiliesSponsorshipPolicy?.Enabled == true) + { + throw new BadRequestException("Free Bitwarden Families sponsorship has been disabled by your organization administrator."); + } + var sponsoringOrgUser = await _organizationUserRepository .GetByOrganizationAsync(sponsoringOrgId, _currentContext.UserId ?? default); @@ -135,6 +150,14 @@ public class OrganizationSponsorshipsController : Controller throw new BadRequestException("Can only redeem sponsorship for an organization you own."); } + var freeFamiliesSponsorshipPolicy = await _policyRepository.GetByOrganizationIdTypeAsync( + model.SponsoredOrganizationId, PolicyType.FreeFamiliesSponsorshipPolicy); + + if (freeFamiliesSponsorshipPolicy?.Enabled == true) + { + throw new BadRequestException("Free Bitwarden Families sponsorship has been disabled by your organization administrator."); + } + await _setUpSponsorshipCommand.SetUpSponsorshipAsync( sponsorship, await _organizationRepository.GetByIdAsync(model.SponsoredOrganizationId));