using Bit.Core.Billing.Enums; using Bit.Core.Enums; using Bit.Infrastructure.EntityFramework.AdminConsole.Models; using Bit.Infrastructure.EntityFramework.Models; using Bit.RustSDK; namespace Bit.Seeder.Factories; public class OrganizationSeeder { public static (Organization organization, string key) CreateEnterprise(string name, string domain, int seats) { var nativeService = RustSdkServiceFactory.CreateSingleton(); var keys = nativeService.GenerateOrganizationKeys(); var organization = new Organization { Id = Guid.NewGuid(), Name = name, BillingEmail = $"billing@{domain}", Plan = "Enterprise (Annually)", PlanType = PlanType.EnterpriseAnnually, Seats = seats, // Currently hardcoded to the values from https://github.com/bitwarden/sdk-internal/blob/main/crates/bitwarden-core/src/client/test_accounts.rs. // TODO: These should be dynamically generated by the SDK. PublicKey = keys.PublicKey, PrivateKey = keys.PrivateKey, }; return (organization, keys.Key); } } public static class OrganizationExtensions { public static OrganizationUser CreateOrganizationUser(this Organization organization, User user, string orgKey) { var nativeService = RustSdkServiceFactory.CreateSingleton(); var userOrgKey = nativeService.GenerateUserOrganizationKey(user.PublicKey!, orgKey); return new OrganizationUser { Id = Guid.NewGuid(), OrganizationId = organization.Id, UserId = user.Id, Key = userOrgKey, Type = OrganizationUserType.Admin, Status = OrganizationUserStatusType.Confirmed }; } }