diff --git a/src/Core/Models/Api/Response/ProfileOrganizationResponseModel.cs b/src/Core/Models/Api/Response/ProfileOrganizationResponseModel.cs index 5058f6fa0e..3a4f90e430 100644 --- a/src/Core/Models/Api/Response/ProfileOrganizationResponseModel.cs +++ b/src/Core/Models/Api/Response/ProfileOrganizationResponseModel.cs @@ -39,6 +39,9 @@ namespace Bit.Core.Models.Api ProviderId = organization.ProviderId?.ToString(); ProviderName = organization.ProviderName; FamilySponsorshipFriendlyName = organization.FamilySponsorshipFriendlyName; + FamilySponsorshipAvailable = FamilySponsorshipFriendlyName == null && + Utilities.StaticStore.GetSponsoredPlan(PlanSponsorshipType.FamiliesForEnterprise) + .UsersCanSponsor(organization); } public string Id { get; set; } @@ -70,5 +73,6 @@ namespace Bit.Core.Models.Api public string ProviderId { get; set; } public string ProviderName { get; set; } public string FamilySponsorshipFriendlyName { get; set; } + public bool FamilySponsorshipAvailable { get; set; } } } diff --git a/src/Core/Models/Data/OrganizationUserOrganizationDetails.cs b/src/Core/Models/Data/OrganizationUserOrganizationDetails.cs index 71aa790033..1fa5369aad 100644 --- a/src/Core/Models/Data/OrganizationUserOrganizationDetails.cs +++ b/src/Core/Models/Data/OrganizationUserOrganizationDetails.cs @@ -25,6 +25,7 @@ namespace Bit.Core.Models.Data public Enums.OrganizationUserStatusType Status { get; set; } public Enums.OrganizationUserType Type { get; set; } public bool Enabled { get; set; } + public Enums.PlanType PlanType { get; set; } public string SsoExternalId { get; set; } public string Identifier { get; set; } public string Permissions { get; set; } diff --git a/src/Core/Models/StaticStore/SponsoredPlan.cs b/src/Core/Models/StaticStore/SponsoredPlan.cs index 782775255f..f9c7b2b6b5 100644 --- a/src/Core/Models/StaticStore/SponsoredPlan.cs +++ b/src/Core/Models/StaticStore/SponsoredPlan.cs @@ -1,4 +1,6 @@ +using System; using Bit.Core.Enums; +using Bit.Core.Models.Data; namespace Bit.Core.Models.StaticStore { @@ -8,5 +10,6 @@ namespace Bit.Core.Models.StaticStore public ProductType SponsoredProductType { get; set; } public ProductType SponsoringProductType { get; set; } public string StripePlanId { get; set; } + public Func UsersCanSponsor { get; set; } } } diff --git a/src/Core/Repositories/EntityFramework/Queries/OrganizationUserOrganizationDetailsViewQuery.cs b/src/Core/Repositories/EntityFramework/Queries/OrganizationUserOrganizationDetailsViewQuery.cs index 95b7a9c99f..05fb280c87 100644 --- a/src/Core/Repositories/EntityFramework/Queries/OrganizationUserOrganizationDetailsViewQuery.cs +++ b/src/Core/Repositories/EntityFramework/Queries/OrganizationUserOrganizationDetailsViewQuery.cs @@ -26,6 +26,7 @@ namespace Bit.Core.Repositories.EntityFramework.Queries UserId = x.ou.UserId, Name = x.o.Name, Enabled = x.o.Enabled, + PlanType = x.o.PlanType, UsePolicies = x.o.UsePolicies, UseSso = x.o.UseSso, UseGroups = x.o.UseGroups, diff --git a/src/Core/Utilities/StaticStore.cs b/src/Core/Utilities/StaticStore.cs index 3607332fcc..68a3e88574 100644 --- a/src/Core/Utilities/StaticStore.cs +++ b/src/Core/Utilities/StaticStore.cs @@ -1,6 +1,6 @@ using Bit.Core.Enums; +using Bit.Core.Models.Data; using Bit.Core.Models.StaticStore; -using Bit.Core.Models.Table; using System.Collections.Generic; using System.Linq; @@ -484,7 +484,9 @@ namespace Bit.Core.Utilities PlanSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise, SponsoredProductType = ProductType.Families, SponsoringProductType = ProductType.Enterprise, - StripePlanId = "2021-enterprise-sponsored-families-org-monthly" + StripePlanId = "2021-enterprise-sponsored-families-org-monthly", + UsersCanSponsor = (OrganizationUserOrganizationDetails org) => + GetPlan(org.PlanType).Product == ProductType.Enterprise, } }; public static Plan GetPlan(PlanType planType) => diff --git a/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql b/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql index 7c10a47bb7..079aacd924 100644 --- a/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql +++ b/util/Migrator/DbScripts/2021-11-02_00_OrganizationSponsorship.sql @@ -622,6 +622,7 @@ SELECT OU.[OrganizationId], O.[Name], O.[Enabled], + O.[PlanType], O.[UsePolicies], O.[UseSso], O.[UseGroups],