mirror of
https://github.com/bitwarden/server.git
synced 2024-11-26 12:55:17 +01:00
backwards compat issues with change email/password
This commit is contained in:
parent
8d37f1c946
commit
23467b7771
@ -76,15 +76,32 @@ namespace Bit.Api.Controllers
|
||||
|
||||
[HttpPut("email")]
|
||||
[HttpPost("email")]
|
||||
public async Task PutEmail([FromBody]EmailRequestModel model)
|
||||
public async Task PutEmail([FromBody]EmailRequestModel_Old model)
|
||||
{
|
||||
var user = await _userService.GetUserByPrincipalAsync(User);
|
||||
|
||||
// NOTE: It is assumed that the eventual repository call will make sure the updated
|
||||
// ciphers belong to user making this call. Therefore, no check is done here.
|
||||
var ciphers = model.Data.Ciphers.Select(c => c.ToCipher(user.Id));
|
||||
var folders = model.Data.Folders.Select(c => c.ToFolder(user.Id));
|
||||
|
||||
//var ciphers = model.Data.Ciphers.Select(c => c.ToCipher(user.Id));
|
||||
//var folders = model.Data.Folders.Select(c => c.ToFolder(user.Id));
|
||||
|
||||
//var result = await _userService.ChangeEmailAsync(
|
||||
// user,
|
||||
// model.MasterPasswordHash,
|
||||
// model.NewEmail,
|
||||
// model.NewMasterPasswordHash,
|
||||
// model.Token,
|
||||
// ciphers,
|
||||
// folders,
|
||||
// model.Data.PrivateKey);
|
||||
|
||||
//
|
||||
// NOTE: Temporary backwards compat. Remove the below and uncomment the above whenever web vault v1.10.0 is released
|
||||
//
|
||||
|
||||
var ciphers = model.Ciphers.Where(c => c.Type == CipherType.Login).Select(c => c.ToCipher(user.Id));
|
||||
var folders = model.Ciphers.Where(c => c.Type == CipherType.Folder).Select(c => c.ToFolder(user.Id));
|
||||
var result = await _userService.ChangeEmailAsync(
|
||||
user,
|
||||
model.MasterPasswordHash,
|
||||
@ -93,7 +110,7 @@ namespace Bit.Api.Controllers
|
||||
model.Token,
|
||||
ciphers,
|
||||
folders,
|
||||
model.Data.PrivateKey);
|
||||
null);
|
||||
|
||||
if(result.Succeeded)
|
||||
{
|
||||
@ -111,22 +128,37 @@ namespace Bit.Api.Controllers
|
||||
|
||||
[HttpPut("password")]
|
||||
[HttpPost("password")]
|
||||
public async Task PutPassword([FromBody]PasswordRequestModel model)
|
||||
public async Task PutPassword([FromBody]PasswordRequestModel_Old model)
|
||||
{
|
||||
var user = await _userService.GetUserByPrincipalAsync(User);
|
||||
|
||||
// NOTE: It is assumed that the eventual repository call will make sure the updated
|
||||
// ciphers belong to user making this call. Therefore, no check is done here.
|
||||
var ciphers = model.Data.Ciphers.Select(c => c.ToCipher(user.Id));
|
||||
var folders = model.Data.Folders.Select(c => c.ToFolder(user.Id));
|
||||
|
||||
//var ciphers = model.Data.Ciphers.Select(c => c.ToCipher(user.Id));
|
||||
//var folders = model.Data.Folders.Select(c => c.ToFolder(user.Id));
|
||||
|
||||
//var result = await _userService.ChangePasswordAsync(
|
||||
// user,
|
||||
// model.MasterPasswordHash,
|
||||
// model.NewMasterPasswordHash,
|
||||
// ciphers,
|
||||
// folders,
|
||||
// model.Data.PrivateKey);
|
||||
|
||||
//
|
||||
// NOTE: Temporary backwards compat. Remove the below and uncomment the above whenever web vault v1.10.0 is released
|
||||
//
|
||||
|
||||
var ciphers = model.Ciphers.Where(c => c.Type == CipherType.Login).Select(c => c.ToCipher(user.Id));
|
||||
var folders = model.Ciphers.Where(c => c.Type == CipherType.Folder).Select(c => c.ToFolder(user.Id));
|
||||
var result = await _userService.ChangePasswordAsync(
|
||||
user,
|
||||
model.MasterPasswordHash,
|
||||
model.NewMasterPasswordHash,
|
||||
ciphers,
|
||||
folders,
|
||||
model.Data.PrivateKey);
|
||||
null);
|
||||
|
||||
if(result.Succeeded)
|
||||
{
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Bit.Core.Models.Api
|
||||
{
|
||||
@ -19,4 +20,23 @@ namespace Bit.Core.Models.Api
|
||||
[Required]
|
||||
public DataReloadRequestModel Data { get; set; }
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
public class EmailRequestModel_Old
|
||||
{
|
||||
[Required]
|
||||
[EmailAddress]
|
||||
[StringLength(50)]
|
||||
public string NewEmail { get; set; }
|
||||
[Required]
|
||||
[StringLength(300)]
|
||||
public string MasterPasswordHash { get; set; }
|
||||
[Required]
|
||||
[StringLength(300)]
|
||||
public string NewMasterPasswordHash { get; set; }
|
||||
[Required]
|
||||
public string Token { get; set; }
|
||||
[Required]
|
||||
public CipherRequestModel[] Ciphers { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Bit.Core.Models.Api
|
||||
{
|
||||
@ -13,4 +14,17 @@ namespace Bit.Core.Models.Api
|
||||
[Required]
|
||||
public DataReloadRequestModel Data { get; set; }
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
public class PasswordRequestModel_Old
|
||||
{
|
||||
[Required]
|
||||
[StringLength(300)]
|
||||
public string MasterPasswordHash { get; set; }
|
||||
[Required]
|
||||
[StringLength(300)]
|
||||
public string NewMasterPasswordHash { get; set; }
|
||||
[Required]
|
||||
public CipherRequestModel[] Ciphers { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -59,6 +59,17 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
return existingCipher;
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
public Folder ToFolder(Guid userId)
|
||||
{
|
||||
return new Folder
|
||||
{
|
||||
Id = new Guid(Id),
|
||||
UserId = userId,
|
||||
Name = Name
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class CipherShareRequestModel : IValidatableObject
|
||||
|
@ -192,7 +192,14 @@ namespace Bit.Core.Repositories.SqlServer
|
||||
cmd.Parameters.Add("@EmailVerified", SqlDbType.NVarChar).Value = user.EmailVerified;
|
||||
cmd.Parameters.Add("@MasterPassword", SqlDbType.NVarChar).Value = user.MasterPassword;
|
||||
cmd.Parameters.Add("@SecurityStamp", SqlDbType.NVarChar).Value = user.SecurityStamp;
|
||||
cmd.Parameters.Add("@PrivateKey", SqlDbType.VarChar).Value = user.PrivateKey;
|
||||
if(string.IsNullOrWhiteSpace(user.PrivateKey))
|
||||
{
|
||||
cmd.Parameters.Add("@PrivateKey", SqlDbType.VarChar).Value = DBNull.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd.Parameters.Add("@PrivateKey", SqlDbType.VarChar).Value = user.PrivateKey;
|
||||
}
|
||||
cmd.Parameters.Add("@RevisionDate", SqlDbType.DateTime2).Value = user.RevisionDate;
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user