1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-15 07:20:49 -05:00

Moved license services over to billing

This commit is contained in:
Conner Turnbull 2025-06-10 11:55:32 -04:00
parent 3a163a96d7
commit d357dcc853
No known key found for this signature in database
19 changed files with 28 additions and 19 deletions

View File

@ -2,13 +2,13 @@
using Bit.Api.AdminConsole.Models.Response.Organizations; using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs; using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs;
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces;
using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.OrganizationConnectionConfigs; using Bit.Core.Models.OrganizationConnectionConfigs;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;

View File

@ -1,9 +1,9 @@
using Bit.Core.Enums; using Bit.Core.Billing.Services;
using Bit.Core.Enums;
using Bit.Core.Jobs; using Bit.Core.Jobs;
using Bit.Core.Models.OrganizationConnectionConfigs; using Bit.Core.Models.OrganizationConnectionConfigs;
using Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnterprise.Interfaces; using Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnterprise.Interfaces;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Quartz; using Quartz;

View File

@ -1,5 +1,5 @@
using Bit.Core.Jobs; using Bit.Core.Billing.Services;
using Bit.Core.Services; using Bit.Core.Jobs;
using Quartz; using Quartz;
namespace Bit.Api.Jobs; namespace Bit.Api.Jobs;

View File

@ -1,5 +1,5 @@
using Bit.Core.Jobs; using Bit.Core.Billing.Services;
using Bit.Core.Services; using Bit.Core.Jobs;
using Quartz; using Quartz;
namespace Bit.Api.Jobs; namespace Bit.Api.Jobs;

View File

@ -21,6 +21,7 @@ using Bit.Core.Billing.Licenses.Enums;
using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Licenses.Extensions;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Billing.Pricing; using Bit.Core.Billing.Pricing;
using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;

View File

@ -1,9 +1,9 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Bit.Core.Billing.Licenses.Attributes; using Bit.Core.Billing.Licenses.Attributes;
using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Licenses.Extensions;
using Bit.Core.Billing.Services;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Services;
namespace Bit.Core.Billing.Licenses.Models; namespace Bit.Core.Billing.Licenses.Models;

View File

@ -6,7 +6,7 @@ using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
namespace Bit.Core.Services; namespace Bit.Core.Billing.Services;
public interface ILicensingService public interface ILicensingService
{ {

View File

@ -11,6 +11,7 @@ using Bit.Core.Entities;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using IdentityModel; using IdentityModel;
@ -19,7 +20,7 @@ using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
namespace Bit.Core.Services; namespace Bit.Core.Billing.Services.Implementations;
public class LicensingService : ILicensingService public class LicensingService : ILicensingService
{ {
@ -92,7 +93,7 @@ public class LicensingService : ILicensingService
} }
var enabledOrgs = await _organizationRepository.GetManyByEnabledAsync(); var enabledOrgs = await _organizationRepository.GetManyByEnabledAsync();
_logger.LogInformation(Constants.BypassFiltersEventId, null, _logger.LogInformation(Core.Constants.BypassFiltersEventId, null,
"Validating licenses for {NumberOfOrganizations} organizations.", enabledOrgs.Count); "Validating licenses for {NumberOfOrganizations} organizations.", enabledOrgs.Count);
var exceptions = new List<Exception>(); var exceptions = new List<Exception>();
@ -141,7 +142,7 @@ public class LicensingService : ILicensingService
private async Task DisableOrganizationAsync(Organization org, ILicense license, string reason) private async Task DisableOrganizationAsync(Organization org, ILicense license, string reason)
{ {
_logger.LogInformation(Constants.BypassFiltersEventId, null, _logger.LogInformation(Core.Constants.BypassFiltersEventId, null,
"Organization {0} ({1}) has an invalid license and is being disabled. Reason: {2}", "Organization {0} ({1}) has an invalid license and is being disabled. Reason: {2}",
org.Id, org.DisplayName(), reason); org.Id, org.DisplayName(), reason);
org.Enabled = false; org.Enabled = false;
@ -160,7 +161,7 @@ public class LicensingService : ILicensingService
} }
var premiumUsers = await _userRepository.GetManyByPremiumAsync(true); var premiumUsers = await _userRepository.GetManyByPremiumAsync(true);
_logger.LogInformation(Constants.BypassFiltersEventId, null, _logger.LogInformation(Core.Constants.BypassFiltersEventId, null,
"Validating premium for {0} users.", premiumUsers.Count); "Validating premium for {0} users.", premiumUsers.Count);
foreach (var user in premiumUsers) foreach (var user in premiumUsers)
@ -199,7 +200,7 @@ public class LicensingService : ILicensingService
_userCheckCache.Add(user.Id, now); _userCheckCache.Add(user.Id, now);
} }
_logger.LogInformation(Constants.BypassFiltersEventId, null, _logger.LogInformation(Core.Constants.BypassFiltersEventId, null,
"Validating premium license for user {0}({1}).", user.Id, user.Email); "Validating premium license for user {0}({1}).", user.Id, user.Email);
return await ProcessUserValidationAsync(user); return await ProcessUserValidationAsync(user);
} }
@ -231,7 +232,7 @@ public class LicensingService : ILicensingService
private async Task DisablePremiumAsync(User user, ILicense license, string reason) private async Task DisablePremiumAsync(User user, ILicense license, string reason)
{ {
_logger.LogInformation(Constants.BypassFiltersEventId, null, _logger.LogInformation(Core.Constants.BypassFiltersEventId, null,
"User {0}({1}) has an invalid license and premium is being disabled. Reason: {2}", "User {0}({1}) has an invalid license and premium is being disabled. Reason: {2}",
user.Id, user.Email, reason); user.Id, user.Email, reason);

View File

@ -9,7 +9,7 @@ using Bit.Core.Settings;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
namespace Bit.Core.Services; namespace Bit.Core.Billing.Services.NoopImplementations;
public class NoopLicensingService : ILicensingService public class NoopLicensingService : ILicensingService
{ {

View File

@ -3,6 +3,7 @@ using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.Licenses.Enums; using Bit.Core.Billing.Licenses.Enums;
using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Licenses.Extensions;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Billing.Services;
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;

View File

@ -4,6 +4,7 @@ using System.Text.Json;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Licenses.Extensions;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Billing.Services;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Data.Organizations; using Bit.Core.Models.Data.Organizations;
using Bit.Core.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.OrganizationFeatures.OrganizationLicenses.Interfaces;

View File

@ -3,10 +3,10 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Security.Claims; using System.Security.Claims;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Identity; using Bit.Core.Identity;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Duende.IdentityServer.Models; using Duende.IdentityServer.Models;
using IdentityModel; using IdentityModel;

View File

@ -1,5 +1,6 @@
using System.Security.Claims; using System.Security.Claims;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Identity; using Bit.Core.Identity;
using Bit.Core.Repositories; using Bit.Core.Repositories;

View File

@ -22,6 +22,7 @@ using Bit.Core.Auth.Services.Implementations;
using Bit.Core.Auth.UserFeatures; using Bit.Core.Auth.UserFeatures;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Billing.Services.Implementations; using Bit.Core.Billing.Services.Implementations;
using Bit.Core.Billing.Services.NoopImplementations;
using Bit.Core.Billing.TrialInitiation; using Bit.Core.Billing.TrialInitiation;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;

View File

@ -5,13 +5,13 @@ using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs; using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs;
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationConnections.Interfaces;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Billing.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.OrganizationConnectionConfigs; using Bit.Core.Models.OrganizationConnectionConfigs;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Test.Common.AutoFixture; using Bit.Test.Common.AutoFixture;
using Bit.Test.Common.AutoFixture.Attributes; using Bit.Test.Common.AutoFixture.Attributes;

View File

@ -3,6 +3,7 @@ using Bit.Core.AdminConsole.Entities.Provider;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Billing.Licenses.Enums; using Bit.Core.Billing.Licenses.Enums;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Billing.Services;
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;

View File

@ -2,6 +2,7 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Licenses.Enums; using Bit.Core.Billing.Licenses.Enums;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Billing.Services;
using Bit.Core.Models.Data.Organizations; using Bit.Core.Models.Data.Organizations;
using Bit.Core.OrganizationFeatures.OrganizationLicenses; using Bit.Core.OrganizationFeatures.OrganizationLicenses;
using Bit.Core.Services; using Bit.Core.Services;

View File

@ -2,7 +2,7 @@
using AutoFixture; using AutoFixture;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Billing.Licenses.Models; using Bit.Core.Billing.Licenses.Models;
using Bit.Core.Services; using Bit.Core.Billing.Services.Implementations;
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Core.Test.AutoFixture; using Bit.Core.Test.AutoFixture;
using Bit.Test.Common.AutoFixture; using Bit.Test.Common.AutoFixture;

View File

@ -1,5 +1,6 @@
using AspNetCoreRateLimit; using AspNetCoreRateLimit;
using Bit.Core.Billing.Services; using Bit.Core.Billing.Services;
using Bit.Core.Billing.Services.NoopImplementations;
using Bit.Core.Platform.Push; using Bit.Core.Platform.Push;
using Bit.Core.Platform.Push.Internal; using Bit.Core.Platform.Push.Internal;
using Bit.Core.Repositories; using Bit.Core.Repositories;