1
0
mirror of https://github.com/bitwarden/server synced 2026-01-03 00:53:37 +00:00

[Reset Password] Organization Key Pair (#1292)

* [Reset Password] Organization Key Pair

* Fixed type in Organization_ReadAbilites sproc

* Fixed broken unit test by making sure premium addon was false

* Updated PublicKey decorator and removed unecessary validation
This commit is contained in:
Vincent Salucci
2021-05-06 14:53:12 -05:00
committed by GitHub
parent cae204cb7c
commit 70ab5b25a1
26 changed files with 535 additions and 12 deletions

View File

@@ -10,5 +10,6 @@ namespace Bit.Core.Models.Api
[EncryptedString]
[EncryptedStringLength(1000)]
public string CollectionName { get; set; }
public OrganizationKeysRequestModel Keys { get; set; }
}
}

View File

@@ -21,6 +21,7 @@ namespace Bit.Core.Models.Api
public PlanType PlanType { get; set; }
[Required]
public string Key { get; set; }
public OrganizationKeysRequestModel Keys { get; set; }
public PaymentMethodType? PaymentMethodType { get; set; }
public string PaymentToken { get; set; }
[Range(0, double.MaxValue)]
@@ -42,7 +43,7 @@ namespace Bit.Core.Models.Api
public virtual OrganizationSignup ToOrganizationSignup(User user)
{
return new OrganizationSignup
var orgSignup = new OrganizationSignup
{
Owner = user,
OwnerKey = Key,
@@ -67,6 +68,10 @@ namespace Bit.Core.Models.Api
BillingAddressCountry = BillingAddressCountry,
},
};
Keys?.ToOrganizationSignup(orgSignup);
return orgSignup;
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)

View File

@@ -0,0 +1,59 @@
using Bit.Core.Models.Table;
using System.ComponentModel.DataAnnotations;
using Bit.Core.Models.Business;
namespace Bit.Core.Models.Api
{
public class OrganizationKeysRequestModel
{
[Required]
public string PublicKey { get; set; }
[Required]
public string EncryptedPrivateKey { get; set; }
public OrganizationSignup ToOrganizationSignup(OrganizationSignup existingSignup)
{
if (string.IsNullOrWhiteSpace(existingSignup.PublicKey))
{
existingSignup.PublicKey = PublicKey;
}
if (string.IsNullOrWhiteSpace(existingSignup.PrivateKey))
{
existingSignup.PrivateKey = EncryptedPrivateKey;
}
return existingSignup;
}
public OrganizationUpgrade ToOrganizationUpgrade(OrganizationUpgrade existingUpgrade)
{
if (string.IsNullOrWhiteSpace(existingUpgrade.PublicKey))
{
existingUpgrade.PublicKey = PublicKey;
}
if (string.IsNullOrWhiteSpace(existingUpgrade.PrivateKey))
{
existingUpgrade.PrivateKey = EncryptedPrivateKey;
}
return existingUpgrade;
}
public Organization ToOrganization(Organization existingOrg)
{
if (string.IsNullOrWhiteSpace(existingOrg.PublicKey))
{
existingOrg.PublicKey = PublicKey;
}
if (string.IsNullOrWhiteSpace(existingOrg.PrivateKey))
{
existingOrg.PrivateKey = EncryptedPrivateKey;
}
return existingOrg;
}
}
}

View File

@@ -18,8 +18,8 @@ namespace Bit.Core.Models.Api
[Required]
[StringLength(256)]
public string BillingEmail { get; set; }
public Permissions Permissions { get; set; }
public OrganizationKeysRequestModel Keys { get; set; }
public virtual Organization ToOrganization(Organization existingOrganization, GlobalSettings globalSettings)
{
@@ -31,6 +31,7 @@ namespace Bit.Core.Models.Api
existingOrganization.BillingEmail = BillingEmail?.ToLowerInvariant()?.Trim();
}
existingOrganization.Identifier = Identifier;
Keys?.ToOrganization(existingOrganization);
return existingOrganization;
}
}

View File

@@ -16,10 +16,11 @@ namespace Bit.Core.Models.Api
public bool PremiumAccessAddon { get; set; }
public string BillingAddressCountry { get; set; }
public string BillingAddressPostalCode { get; set; }
public OrganizationKeysRequestModel Keys { get; set; }
public OrganizationUpgrade ToOrganizationUpgrade()
{
return new OrganizationUpgrade
var orgUpgrade = new OrganizationUpgrade
{
AdditionalSeats = AdditionalSeats,
AdditionalStorageGb = AdditionalStorageGb.GetValueOrDefault(),
@@ -32,6 +33,10 @@ namespace Bit.Core.Models.Api
BillingAddressPostalCode = BillingAddressPostalCode
}
};
Keys.ToOrganizationUpgrade(orgUpgrade);
return orgUpgrade;
}
}
}