using System.Security.Claims; using Bit.Core.AdminConsole.Entities; using Bit.Core.Billing.Enums; using Bit.Core.Billing.Licenses; using Bit.Core.Billing.Licenses.Extensions; using Bit.Core.Billing.Organizations.Models; using Bit.Core.Entities; using Bit.Core.Enums; namespace Bit.Core.AdminConsole.Services; public static class OrganizationFactory { public static Organization Create( User owner, ClaimsPrincipal claimsPrincipal, string publicKey, string privateKey) => new() { Name = claimsPrincipal.GetValue(OrganizationLicenseConstants.Name), BillingEmail = claimsPrincipal.GetValue(OrganizationLicenseConstants.BillingEmail), BusinessName = claimsPrincipal.GetValue(OrganizationLicenseConstants.BusinessName), PlanType = claimsPrincipal.GetValue(OrganizationLicenseConstants.PlanType), Seats = claimsPrincipal.GetValue(OrganizationLicenseConstants.Seats), MaxCollections = claimsPrincipal.GetValue(OrganizationLicenseConstants.MaxCollections), MaxStorageGb = Constants.SelfHostedMaxStorageGb, UsePolicies = claimsPrincipal.GetValue(OrganizationLicenseConstants.UsePolicies), UseSso = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseSso), UseKeyConnector = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseKeyConnector), UseScim = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseScim), UseGroups = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseGroups), UseDirectory = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseDirectory), UseEvents = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseEvents), UseTotp = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseTotp), Use2fa = claimsPrincipal.GetValue(OrganizationLicenseConstants.Use2fa), UseApi = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseApi), UseResetPassword = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseResetPassword), Plan = claimsPrincipal.GetValue(OrganizationLicenseConstants.Plan), SelfHost = claimsPrincipal.GetValue(OrganizationLicenseConstants.SelfHost), UsersGetPremium = claimsPrincipal.GetValue(OrganizationLicenseConstants.UsersGetPremium), UseCustomPermissions = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseCustomPermissions), Gateway = null, GatewayCustomerId = null, GatewaySubscriptionId = null, ReferenceData = owner.ReferenceData, Enabled = claimsPrincipal.GetValue(OrganizationLicenseConstants.Enabled), ExpirationDate = claimsPrincipal.GetValue(OrganizationLicenseConstants.Expires), LicenseKey = claimsPrincipal.GetValue(OrganizationLicenseConstants.LicenseKey), PublicKey = publicKey, PrivateKey = privateKey, CreationDate = DateTime.UtcNow, RevisionDate = DateTime.UtcNow, Status = OrganizationStatusType.Created, UsePasswordManager = claimsPrincipal.GetValue(OrganizationLicenseConstants.UsePasswordManager), UseSecretsManager = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseSecretsManager), SmSeats = claimsPrincipal.GetValue(OrganizationLicenseConstants.SmSeats), SmServiceAccounts = claimsPrincipal.GetValue(OrganizationLicenseConstants.SmServiceAccounts), UseRiskInsights = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseRiskInsights), UseOrganizationDomains = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseOrganizationDomains), UseAdminSponsoredFamilies = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseAdminSponsoredFamilies), UseAutomaticUserConfirmation = claimsPrincipal.GetValue(OrganizationLicenseConstants.UseAutomaticUserConfirmation), }; public static Organization Create( User owner, OrganizationLicense license, string publicKey, string privateKey) => new() { Name = license.Name, BillingEmail = license.BillingEmail, BusinessName = license.BusinessName, PlanType = license.PlanType, Seats = license.Seats, MaxCollections = license.MaxCollections, MaxStorageGb = Constants.SelfHostedMaxStorageGb, UsePolicies = license.UsePolicies, UseSso = license.UseSso, UseKeyConnector = license.UseKeyConnector, UseScim = license.UseScim, UseGroups = license.UseGroups, UseDirectory = license.UseDirectory, UseEvents = license.UseEvents, UseTotp = license.UseTotp, Use2fa = license.Use2fa, UseApi = license.UseApi, UseResetPassword = license.UseResetPassword, Plan = license.Plan, SelfHost = license.SelfHost, UsersGetPremium = license.UsersGetPremium, UseCustomPermissions = license.UseCustomPermissions, Gateway = null, GatewayCustomerId = null, GatewaySubscriptionId = null, ReferenceData = owner.ReferenceData, Enabled = license.Enabled, ExpirationDate = license.Expires, LicenseKey = license.LicenseKey, PublicKey = publicKey, PrivateKey = privateKey, CreationDate = DateTime.UtcNow, RevisionDate = DateTime.UtcNow, Status = OrganizationStatusType.Created, UsePasswordManager = license.UsePasswordManager, UseSecretsManager = license.UseSecretsManager, SmSeats = license.SmSeats, SmServiceAccounts = license.SmServiceAccounts, UseRiskInsights = license.UseRiskInsights, UseOrganizationDomains = license.UseOrganizationDomains, UseAdminSponsoredFamilies = license.UseAdminSponsoredFamilies, }; }