1
0
mirror of https://github.com/bitwarden/server synced 2025-12-29 06:33:43 +00:00
Files
server/util/Seeder/Factories/OrganizationSeeder.cs
2025-07-31 14:48:48 +02:00

55 lines
1.8 KiB
C#

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
};
}
}