1
0
mirror of https://github.com/bitwarden/server synced 2025-12-25 04:33:26 +00:00

Merge branch 'master' into flexible-collections/deprecate-custom-collection-perm

This commit is contained in:
Rui Tome
2023-11-06 12:38:14 +00:00
53 changed files with 558 additions and 250 deletions

View File

@@ -82,7 +82,7 @@
<label asp-for="PlanType"></label>
@{
var planTypes = Enum.GetValues<PlanType>()
.Where(p => Model.Provider == null || p is >= PlanType.TeamsMonthly and <= PlanType.EnterpriseAnnually)
.Where(p => Model.Provider == null || p is >= PlanType.TeamsMonthly and <= PlanType.TeamsStarter)
.Select(e => new SelectListItem
{
Value = ((int)e).ToString(),

View File

@@ -74,6 +74,7 @@
case '@((byte)PlanType.TeamsAnnually2020)':
case '@((byte)PlanType.TeamsMonthly)':
case '@((byte)PlanType.TeamsAnnually)':
case '@((byte)PlanType.TeamsStarter)':
document.getElementById('@(nameof(Model.UsePolicies))').checked = false;
document.getElementById('@(nameof(Model.UseSso))').checked = false;
document.getElementById('@(nameof(Model.UseGroups))').checked = true;

View File

@@ -2792,15 +2792,15 @@
"commercial.core": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )"
"Core": "[2023.10.1, )"
}
},
"commercial.infrastructure.entityframework": {
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
},
"core": {
@@ -2848,7 +2848,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2856,7 +2856,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2868,7 +2868,7 @@
"migrator": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.Extensions.Logging": "[6.0.0, )",
"dbup-sqlserver": "[5.0.8, )"
}
@@ -2876,30 +2876,30 @@
"mysqlmigrations": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
},
"postgresmigrations": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
},
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
},
"sqlitemigrations": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -33,9 +33,12 @@ public class PlansController : Controller
public ListResponseModel<PlanResponseModel> Get()
{
var plansUpgradeIsEnabled = _featureService.IsEnabled(FeatureFlagKeys.BillingPlansUpgrade, _currentContext);
var data = StaticStore.Plans;
var responses = data
.Where(plan => plansUpgradeIsEnabled || plan.Type <= PlanType.EnterpriseAnnually2020)
var teamsStarterPlanIsEnabled = _featureService.IsEnabled(FeatureFlagKeys.BillingStarterPlan, _currentContext);
var responses = StaticStore.Plans
// If plans upgrade is disabled, return only the original plans. Otherwise, return everything
.Where(plan => plansUpgradeIsEnabled || plan.Type <= PlanType.EnterpriseAnnually2020 || plan.Type == PlanType.TeamsStarter)
// If teams starter is disabled, don't return that plan, otherwise return everything
.Where(plan => teamsStarterPlanIsEnabled || plan.Product != ProductType.TeamsStarter)
.Select(plan =>
{
if (!plansUpgradeIsEnabled && plan.Type is <= PlanType.EnterpriseAnnually2020 and >= PlanType.TeamsMonthly2020)

View File

@@ -2772,15 +2772,15 @@
"commercial.core": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )"
"Core": "[2023.10.1, )"
}
},
"commercial.infrastructure.entityframework": {
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
},
"core": {
@@ -2828,7 +2828,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2836,7 +2836,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2848,9 +2848,9 @@
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -164,6 +164,7 @@ public class FreshsalesController : Controller
case PlanType.TeamsMonthly:
case PlanType.TeamsMonthly2020:
case PlanType.TeamsMonthly2019:
case PlanType.TeamsStarter:
planName = "Teams";
return true;
case PlanType.EnterpriseAnnually:

View File

@@ -2631,7 +2631,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2639,7 +2639,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2651,9 +2651,9 @@
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -64,6 +64,7 @@ public static class FeatureFlagKeys
public const string AutofillOverlay = "autofill-overlay";
public const string ItemShare = "item-share";
public const string BillingPlansUpgrade = "billing-plans-upgrade";
public const string BillingStarterPlan = "billing-starter-plan";
public static List<string> GetAllKeys()
{

View File

@@ -36,4 +36,6 @@ public enum PlanType : byte
EnterpriseMonthly = 14,
[Display(Name = "Enterprise (Annually)")]
EnterpriseAnnually = 15,
[Display(Name = "Teams Starter")]
TeamsStarter = 16,
}

View File

@@ -12,5 +12,7 @@ public enum ProductType : byte
Teams = 2,
[Display(Name = "Enterprise")]
Enterprise = 3,
[Display(Name = "Teams Starter")]
TeamsStarter = 4,
}

View File

@@ -4,10 +4,18 @@ using Plan = Bit.Core.Models.StaticStore.Plan;
namespace Bit.Core.Models.Business;
public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOptions
public class OrganizationSubscriptionOptionsBase : SubscriptionCreateOptions
{
public OrganizationSubscriptionOptionsBase(Organization org, StaticStore.Plan plan, TaxInfo taxInfo, int additionalSeats,
int additionalStorageGb, bool premiumAccessAddon, int additionalSmSeats, int additionalServiceAccounts)
public OrganizationSubscriptionOptionsBase(
Organization org,
Plan plan,
TaxInfo taxInfo,
int additionalSeats,
int additionalStorageGb,
bool premiumAccessAddon,
bool useSecretsManager,
int additionalSmSeats,
int additionalServiceAccounts)
{
Items = new List<SubscriptionItemOptions>();
Metadata = new Dictionary<string, string>
@@ -17,7 +25,7 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti
AddPlanIdToSubscription(plan);
if (org.UseSecretsManager)
if (useSecretsManager)
{
AddSecretsManagerSeat(plan, additionalSmSeats);
AddServiceAccount(plan, additionalServiceAccounts);
@@ -38,7 +46,10 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti
if (additionalSmSeats > 0 && plan.SecretsManager.StripeSeatPlanId != null)
{
Items.Add(new SubscriptionItemOptions
{ Plan = plan.SecretsManager.StripeSeatPlanId, Quantity = additionalSmSeats });
{
Plan = plan.SecretsManager.StripeSeatPlanId,
Quantity = additionalSmSeats
});
}
}
@@ -47,11 +58,14 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti
if (additionalSeats > 0 && plan.PasswordManager.StripeSeatPlanId != null)
{
Items.Add(new SubscriptionItemOptions
{ Plan = plan.PasswordManager.StripeSeatPlanId, Quantity = additionalSeats });
{
Plan = plan.PasswordManager.StripeSeatPlanId,
Quantity = additionalSeats
});
}
}
private void AddServiceAccount(StaticStore.Plan plan, int additionalServiceAccounts)
private void AddServiceAccount(Plan plan, int additionalServiceAccounts)
{
if (additionalServiceAccounts > 0 && plan.SecretsManager.StripeServiceAccountPlanId != null)
{
@@ -63,7 +77,7 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti
}
}
private void AddAdditionalStorage(StaticStore.Plan plan, int additionalStorageGb)
private void AddAdditionalStorage(Plan plan, int additionalStorageGb)
{
if (additionalStorageGb > 0)
{
@@ -75,19 +89,27 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti
}
}
private void AddPremiumAccessAddon(StaticStore.Plan plan, bool premiumAccessAddon)
private void AddPremiumAccessAddon(Plan plan, bool premiumAccessAddon)
{
if (premiumAccessAddon && plan.PasswordManager.StripePremiumAccessPlanId != null)
{
Items.Add(new SubscriptionItemOptions { Plan = plan.PasswordManager.StripePremiumAccessPlanId, Quantity = 1 });
Items.Add(new SubscriptionItemOptions
{
Plan = plan.PasswordManager.StripePremiumAccessPlanId,
Quantity = 1
});
}
}
private void AddPlanIdToSubscription(StaticStore.Plan plan)
private void AddPlanIdToSubscription(Plan plan)
{
if (plan.PasswordManager.StripePlanId != null)
{
Items.Add(new SubscriptionItemOptions { Plan = plan.PasswordManager.StripePlanId, Quantity = 1 });
Items.Add(new SubscriptionItemOptions
{
Plan = plan.PasswordManager.StripePlanId,
Quantity = 1
});
}
}
}
@@ -95,11 +117,18 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti
public class OrganizationPurchaseSubscriptionOptions : OrganizationSubscriptionOptionsBase
{
public OrganizationPurchaseSubscriptionOptions(
Organization org, StaticStore.Plan plan,
TaxInfo taxInfo, int additionalSeats,
int additionalStorageGb, bool premiumAccessAddon,
int additionalSmSeats, int additionalServiceAccounts) :
base(org, plan, taxInfo, additionalSeats, additionalStorageGb, premiumAccessAddon, additionalSmSeats, additionalServiceAccounts)
Organization org,
Plan plan,
TaxInfo taxInfo,
int additionalSeats,
int additionalStorageGb,
bool premiumAccessAddon,
int additionalSmSeats,
int additionalServiceAccounts) :
base(org, plan, taxInfo, additionalSeats,
additionalStorageGb, premiumAccessAddon,
org.UseSecretsManager, additionalSmSeats,
additionalServiceAccounts)
{
OffSession = true;
TrialPeriodDays = plan.TrialPeriodDays;
@@ -109,11 +138,14 @@ public class OrganizationPurchaseSubscriptionOptions : OrganizationSubscriptionO
public class OrganizationUpgradeSubscriptionOptions : OrganizationSubscriptionOptionsBase
{
public OrganizationUpgradeSubscriptionOptions(
string customerId, Organization org,
StaticStore.Plan plan, OrganizationUpgrade upgrade) :
base(org, plan, upgrade.TaxInfo, upgrade.AdditionalSeats, upgrade.AdditionalStorageGb,
upgrade.PremiumAccessAddon, upgrade.AdditionalSmSeats.GetValueOrDefault(),
upgrade.AdditionalServiceAccounts.GetValueOrDefault())
string customerId,
Organization org,
Plan plan,
OrganizationUpgrade upgrade) :
base(org, plan, upgrade.TaxInfo, upgrade.AdditionalSeats,
upgrade.AdditionalStorageGb, upgrade.PremiumAccessAddon,
upgrade.UseSecretsManager, upgrade.AdditionalSmSeats.GetValueOrDefault(),
upgrade.AdditionalServiceAccounts.GetValueOrDefault())
{
Customer = customerId;
}

View File

@@ -0,0 +1,70 @@
using Bit.Core.Enums;
namespace Bit.Core.Models.StaticStore.Plans;
public record TeamsStarterPlan : Plan
{
public TeamsStarterPlan()
{
Type = PlanType.TeamsStarter;
Product = ProductType.TeamsStarter;
Name = "Teams (Starter)";
NameLocalizationKey = "planNameTeamsStarter";
DescriptionLocalizationKey = "planDescTeams";
CanBeUsedByBusiness = true;
TrialPeriodDays = 7;
HasGroups = true;
HasDirectory = true;
HasEvents = true;
HasTotp = true;
Has2fa = true;
HasApi = true;
UsersGetPremium = true;
UpgradeSortOrder = 2;
DisplaySortOrder = 2;
PasswordManager = new TeamsStarterPasswordManagerFeatures();
SecretsManager = new TeamsStarterSecretsManagerFeatures();
}
private record TeamsStarterSecretsManagerFeatures : SecretsManagerPlanFeatures
{
public TeamsStarterSecretsManagerFeatures()
{
BaseSeats = 0;
BasePrice = 0;
BaseServiceAccount = 50;
HasAdditionalSeatsOption = true;
HasAdditionalServiceAccountOption = true;
AllowSeatAutoscale = true;
AllowServiceAccountsAutoscale = true;
StripeSeatPlanId = "secrets-manager-teams-seat-monthly";
StripeServiceAccountPlanId = "secrets-manager-service-account-monthly";
SeatPrice = 7;
AdditionalPricePerServiceAccount = 0.5M;
}
}
private record TeamsStarterPasswordManagerFeatures : PasswordManagerPlanFeatures
{
public TeamsStarterPasswordManagerFeatures()
{
BaseSeats = 10;
BaseStorageGb = 1;
BasePrice = 20;
MaxSeats = 10;
HasAdditionalStorageOption = true;
StripePlanId = "teams-org-starter";
AdditionalStoragePricePerGb = 0.5M;
}
}
}

View File

@@ -243,6 +243,12 @@ public class UpdateSecretsManagerSubscriptionCommand : IUpdateSecretsManagerSubs
"You cannot decrease your subscription below your current occupied seat count.");
}
}
// Check that SM seats aren't greater than password manager seats
if (organization.Seats < update.SmSeats.Value)
{
throw new BadRequestException("You cannot have more Secrets Manager seats than Password Manager seats.");
}
}
private async Task ValidateSmServiceAccountsUpdateAsync(SecretsManagerSubscriptionUpdate update)

View File

@@ -1811,9 +1811,9 @@ public class OrganizationService : IOrganizationService
private static void ValidatePlan(Models.StaticStore.Plan plan, int additionalSeats, string productType)
{
if (plan is not { LegacyYear: null })
if (plan is null)
{
throw new BadRequestException($"Invalid {productType} plan selected.");
throw new BadRequestException($"{productType} Plan was null.");
}
if (plan.Disabled)
@@ -1829,6 +1829,11 @@ public class OrganizationService : IOrganizationService
public void ValidatePasswordManagerPlan(Models.StaticStore.Plan plan, OrganizationUpgrade upgrade)
{
if (plan is not { LegacyYear: null })
{
throw new BadRequestException("Invalid Password Manager plan selected.");
}
ValidatePlan(plan, upgrade.AdditionalSeats, "Password Manager");
if (plan.PasswordManager.BaseSeats + upgrade.AdditionalSeats <= 0)
@@ -1888,7 +1893,10 @@ public class OrganizationService : IOrganizationService
throw new BadRequestException("Plan does not allow additional Service Accounts.");
}
if (upgrade.AdditionalSmSeats.GetValueOrDefault() > upgrade.AdditionalSeats)
if ((plan.Product == ProductType.TeamsStarter &&
upgrade.AdditionalSmSeats.GetValueOrDefault() > plan.PasswordManager.BaseSeats) ||
(plan.Product != ProductType.TeamsStarter &&
upgrade.AdditionalSmSeats.GetValueOrDefault() > upgrade.AdditionalSeats))
{
throw new BadRequestException("You cannot have more Secrets Manager seats than Password Manager seats.");
}

View File

@@ -106,10 +106,11 @@ public static class StaticStore
GlobalDomains.Add(GlobalEquivalentDomainsType.Pinterest, new List<string> { "pinterest.com", "pinterest.com.au", "pinterest.cl", "pinterest.de", "pinterest.dk", "pinterest.es", "pinterest.fr", "pinterest.co.uk", "pinterest.jp", "pinterest.co.kr", "pinterest.nz", "pinterest.pt", "pinterest.se" });
#endregion
Plans = new List<Models.StaticStore.Plan>
Plans = new List<Plan>
{
new EnterprisePlan(true),
new EnterprisePlan(false),
new TeamsStarterPlan(),
new TeamsPlan(true),
new TeamsPlan(false),
@@ -130,7 +131,7 @@ public static class StaticStore
}
public static IDictionary<GlobalEquivalentDomainsType, IEnumerable<string>> GlobalDomains { get; set; }
public static IEnumerable<Models.StaticStore.Plan> Plans { get; }
public static IEnumerable<Plan> Plans { get; }
public static IEnumerable<SponsoredPlan> SponsoredPlans { get; set; } = new[]
{
new SponsoredPlan

View File

@@ -2631,7 +2631,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2639,7 +2639,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2651,9 +2651,9 @@
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -2631,7 +2631,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2639,7 +2639,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2651,9 +2651,9 @@
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -2640,7 +2640,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2648,7 +2648,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2660,9 +2660,9 @@
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -2653,7 +2653,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2661,7 +2661,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2673,9 +2673,9 @@
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -2681,7 +2681,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2689,7 +2689,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",
@@ -2701,9 +2701,9 @@
"sharedweb": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Infrastructure.Dapper": "[2023.10.0, )",
"Infrastructure.EntityFramework": "[2023.10.0, )"
"Core": "[2023.10.1, )",
"Infrastructure.Dapper": "[2023.10.1, )",
"Infrastructure.EntityFramework": "[2023.10.1, )"
}
}
}

View File

@@ -2631,7 +2631,7 @@
"infrastructure.dapper": {
"type": "Project",
"dependencies": {
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Dapper": "[2.0.123, )"
}
},
@@ -2639,7 +2639,7 @@
"type": "Project",
"dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.0, )",
"Core": "[2023.10.1, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )",